批量查询监控数据
使用前常见问题
接口调用过程中常见问题
- 问题一
调用批量查询监控数据接口,响应状态码200,无指标数据返回。响应体样例如下:
{ "metrics": [{ "namespace": "SYS.RDS", "metric_name": "rds039_disk_util", "dimensions": [{ "name": "instance_id", "value": "5e319882ffa04c968e469035a116b2d1in04" }], "datapoints": [],##指标数据列表中没有指标数据 "unit": "unknown" }] }
可能原因
- 原因1:云服务对应的命名空间写错。详见下方【案例一】。
- 原因2:请求资源不存在。详见下方【案例二】。
- 原因2:维度不属于云服务。详见下方【案例三】。
- 原因3:指标ID不属于云服务。详见下方【案例四】。
解决方法
支持监控的服务列表中命名空间、维度、监控指标参考文档三列内容匹配。
案例一 云服务对应的命名空间写错
指标ID mem_usedPercent 对应的命名空间为AGT.ECS。
请求参数
{ "from": 1724311893283, "to": 1724315493283, "period": "1", "filter": "average", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea6" }], "metric_name": "mem_usedPercent", "namespace": "SYS.ECS" ##命名空间错误 }] }
响应参数
{ "metrics": [{ "namespace": "SYS.ECS", "metric_name": "mem_usedPercent", "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea6" }], "datapoints": [], "unit": "unknown" }] }
案例二 请求资源不存在
资源实例 129718f5-833d-4f78-b685-6b1c3091ea7 没有在ECS云服务资源列表中。
请求参数
{ "from": 1724311893283, "to": 1724315493283, "period": "1", "filter": "average", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea7" ##资源实例129718f5-833d-4f78-b685-6b1c3091ea7 没在ECS云服务资源列表中 }], "metric_name": "mem_usedPercent", "namespace": "AGT.ECS" }] }
响应参数
{ "metrics": [{ "namespace": "AGT.ECS", "metric_name": "mem_usedPercent", "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea6" }], "datapoints": [], "unit": "unknown" }] }
案例三 维度不属于云服务
instance_id维度不属于RDS云服务
请求参数:
{ "metrics": [{ "dimensions": [{ "name": "instance_id", ##instance_id维度不属于RDS云服务 "value": "5e319882ffa04c968e469035a116b2d1in04" }], "metric_name": "rds039_disk_util", "namespace": "SYS.RDS" }], "filter": "average", "period": "1", "from": 1724312777938, "to": 1724316377938 }
响应参数:
{ "metrics": [{ "namespace": "SYS.RDS", "metric_name": "rds039_disk_util", "dimensions": [{ "name": "instance_id", "value": "5e319882ffa04c968e469035a116b2d1in04" }], "datapoints": [], "unit": "unknown" }] }
案例四 指标ID不属于云服务
rds958_disk_util指标ID不属于RDS云服务。
请求参数:
{ "metrics": [{ "dimensions": [{ "name": "rds_cluster_sqlserver_id", "value": "5e319882ffa04c968e469035a116b2d1in04" }], "metric_name": "rds958_disk_util", ##rds958_disk_util指标ID不属于RDS云服务 "namespace": "SYS.RDS" }], "filter": "average", "period": "1", "from": 1724312777938, "to": 1724316377938 }
响应参数:
{ "metrics": [{ "namespace": "SYS.RDS", "metric_name": "rds958_disk_util", "dimensions": [{ "name": "rds_cluster_sqlserver_id", "value": "5e319882ffa04c968e469035a116b2d1in04" }], "datapoints": [], "unit": "unknown" }] }
- 问题二
调用批量查询监控数据接口,查询弹性云服务器中操作系统监控的磁盘使用率,响应状态码200,无指标数据返回。
响应体样例如下:
{ "metrics": [{ "namespace": "AGT.ECS", "metric_name": "disk_usedPercent", "dimensions": [{ "name": "disk", "value": "012bec14bc176310c19f40e384fd629b" }, { "name": "instance_id", "value": "07d878a9-2243-4e84-aeef-c47747d18024" }], "datapoints": [], ##指标数据列表中没有指标数据 "unit": "unknown" }] }
可能原因
原因1:命名空间错误。详见下方【案例一】
原因2:指标对应的维度错误。详见下方【案例二】
原因3:ECS实例未安装agent插件。详见下方【案例三】
原因4:ECS实例安装的agent插件没有上报磁盘使用率指标数据。详见下方【案例四】
案例一 命名空间错误
命名空间错误。若查询的是弹性云服务器中操作系统监控指标,命名空间需为AGT.ECS。
请求参数:
{ "from": 1724118017498, "to": 1724121617498, "period": "1", "filter": "average", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "07d878a9-2243-4e84-aeef-c47747d18024" }, { "name": "mount_point", "value": "012bec14bc176310c19f40e384fd629b" }], "metric_name": "disk_usedPercent", "namespace": "SYS.ECS" ##命名空间错误 }] }
响应参数:
{ "metrics": [{ "namespace": "SYS.ECS", "metric_name": "disk_usedPercent", "dimensions": [{ "name": "mount_point", "value": "012bec14bc176310c19f40e384fd629b" }, { "name": "instance_id", "value": "07d878a9-2243-4e84-aeef-c47747d18024" }], "datapoints": [], "unit": "unknown" }] }
案例二 指标对应的维度错误
磁盘使用率是挂载点维度,对于磁盘使用率查询在请求参数中需要写两个维度,维度一为云服务实例instance_id,维度二为挂载点mount_point。
请求参数:
{ "from": 1724118017498, "to": 1724121617498, "period": "1", "filter": "average", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "07d878a9-2243-4e84-aeef-c47747d18024" }, { "name": "disk", ##指标对应的维度错误 "value": "012bec14bc176310c19f40e384fd629b" }], "metric_name": "disk_usedPercent", "namespace": "AGT.ECS" }] }
响应参数:
{ "metrics": [{ "namespace": "AGT.ECS", "metric_name": "disk_usedPercent", "dimensions": [{ "name": "disk", "value": "012bec14bc176310c19f40e384fd629b" }, { "name": "instance_id", "value": "07d878a9-2243-4e84-aeef-c47747d18024" }], "datapoints": [], "unit": "unknown" }] }
案例三 ECS实例未安装agent插件
在CES页面“主机监控”下的【弹性云服务器】中找到对应ECS的实例,在【插件状态】列点击,未安装,然后根据使用指南安装agent插件。
案例四 ECS实例安装的agent插件没有上报磁盘使用率指标数据
agent插件故障导致没有上报指标数据,详见agent常见问题排查。
- 问题二
指定时间范围内上报的指标数据量大于3000,但调用批量查询监控数据接口,返回的指标数据量小于3000。
可能原因
对于不同的period取值和查询的指标数量,其对应的默认最大查询区间(to - from)也不同,计算规则为“指标数量 * (to - from) / 监控周期 ≤ 3000”。
- 指标数量:请求参数metrics属性对应元素的个数。
- 监控周期:请求参数period属性对应的值,单位默认为分钟,需转化为毫秒。
- 3000:响应体中的所有datapoints(指标数据列表)总和。
原因1:若上报指标周期小于批量查询监控数据的监控周期,会将监控周期内上报的多条指标数据按照聚合规则聚合成一个点,所以导致查询出来的指标数据量少于上报的数据量。
原因2:若上报指标周期与批量查询监控数据的监控周期相同,根据上面计算规则,最多返回的指标数据量为3000。
解决方法
- 将请求参数监控周期按照接口文档给出的枚举值选择小点的监控周期。
- 使用查询监控数据接口查询指标数据(仅支持单指标查询),该接口对返回的指标数据量无限制操作。
- 问题二
调用批量查询监控数据接口,返回的指标数据点时间远大于请求参数from对应的值。
可能原因
对于不同的period取值和查询的指标数量,其对应的默认最大查询区间(to - from)也不同,计算规则为“指标数量 * (to - from) / 监控周期 ≤ 3000”。
- 指标数量:请求参数metrics属性对应元素的个数。
- 监控周期:请求参数period属性对应的值,单位默认为分钟,需转化为毫秒。
- 3000:响应体中的所有datapoints(指标数据列表)总和。
例如批量查询300个指标,监控周期为60000ms,可算出(to - from)最大值为"600000",若设定的请求参数(to - from)超出最大值,from值会自动调整为"to-600000"
原因1: 根据以上公式可知指标数量过多。详见下方【案例一】
原因2: 根据以上公式可知监控周期过小。详见下方【案例一】
解决方法
原因1:指标数量过多。
解决方法:减少指标数量。
使用查询监控数据接口查询指标数据(仅支持单指标查询)。
原因2:选择的监控周期对应的枚举值小。
解决方法: 将请求参数监控周期按照接口文档给出的枚举值选择大点的监控周期。
案例一 指标数量过多,监控周期过小
若请求参数指标数量为300个,监控周期为1min对应60000ms,根据以上公式可算出(to - from)最大值为"600000"。请求参数to-from=1724742027556-1724738427556=3600000,超出了600000,from值会自动调整为"to-600000"即1724742027556-600000=1724741427556。
接口在指定时间范围内返回指标数据点最早的时间为2024-08-27 14:51:27,但查询的开始时间为2024-08-27 14:00:27。
请求参数
{ "metrics": [ { "dimensions": [ { "name": "disk_name", "value": "6a2bf14a-e3be-4fc9-8522-ba6fe7f0b503-vda" } ], "metric_name": "disk_device_read_bytes_rate", "namespace": "SYS.EVS" }, { "dimensions": [ { "name": "disk_name", "value": "6a2bf14a-e3be-4fc9-8522-ba6fe7f0b503-vdc" } ], "metric_name": "disk_device_read_bytes_rate", "namespace": "SYS.EVS" }, { "dimensions": [ { "name": "disk_name", "value": "6a2bf14a-e3be-4fc9-8522-ba6fe7f0b503-vda" } ], "metric_name": "disk_device_write_bytes_rate", "namespace": "SYS.EVS" }, { "dimensions": [ { "name": "disk_name", "value": "6a2bf14a-e3be-4fc9-8522-ba6fe7f0b503-vdc" } ], "metric_name": "disk_device_write_bytes_rate", "namespace": "SYS.EVS" }, ...... { "dimensions": [ { "name": "nat_gateway_id", "value": "3c55363f-6416-45ca-8512-cf1f6f2533e7" } ], "metric_name": "inbound_pps", "namespace": "SYS.NAT" } ], "filter": "max", "period": "1", "from": 1724738427556, ##2024-08-27 14:00:27 "to": 1724742027556 ##2024-08-27 15:00:27 }
响应参数
{ "metrics": [ { "namespace": "SYS.EVS", "metric_name": "disk_device_read_bytes_rate", "dimensions": [ { "name": "disk_name", "value": "6a2bf14a-e3be-4fc9-8522-ba6fe7f0b503-vda" } ], "datapoints": [ { "max": 0, "timestamp": 1724741487000 ##2024-08-27 14:51:27 }, { "max": 0, "timestamp": 1724741547000 ##2024-08-27 14:52:27 }, { "max": 0, "timestamp": 1724741607000 }, { "max": 0, "timestamp": 1724741667000 }, { "max": 0, "timestamp": 1724741727000 }, ...... ], "unit": "B/s" }, { "namespace": "SYS.EVS", "metric_name": "disk_device_read_bytes_rate", "dimensions": [ { "name": "disk_name", "value": "6a2bf14a-e3be-4fc9-8522-ba6fe7f0b503-vdc" } ], "datapoints": [ { "max": 0, "timestamp": 1724741487000 }, { "max": 0, "timestamp": 1724741547000 }, { "max": 0, "timestamp": 1724741607000 }, { "max": 0, "timestamp": 1724741667000 }, { "max": 0, "timestamp": 1724741727000 }, ...... ], "unit": "B/s" }, { "namespace": "SYS.EVS", "metric_name": "disk_device_write_bytes_rate", "dimensions": [ { "name": "disk_name", "value": "6a2bf14a-e3be-4fc9-8522-ba6fe7f0b503-vda" } ], "datapoints": [ { "max": 3055.1, "timestamp": 1724741487000 }, { "max": 3195.78, "timestamp": 1724741547000 }, { "max": 2973.39, "timestamp": 1724741607000 }, { "max": 3533.52, "timestamp": 1724741667000 }, { "max": 2636.8, "timestamp": 1724741727000 }, ....... ], "unit": "B/s" }, ...... ] }
常见4XX问题处理
- HTTP状态码
400
错误码
ces.0014
可能原因
原因1:请求参数格式错误。详见下方【案例一】
原因2:必传字段没有传。详见下方【案例二】
案例一 请求参数格式错误
- from、to属性对应的值应该换算为毫秒进行传参。
- period属性支持的枚举值:1,300,1200,3600,14400,86400。
- filter属性支持的枚举值:average,max,min,sum,variance。
{ "from": 1724331974, ##传参为秒级非毫秒级 "to": 1724315493, ##传参为秒级非毫秒级 "period": "10086", ##period属性对应的枚举值不存在10086 "filter": "standard", ##filter属性对应的枚举值不存在standard "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea69" }], "metric_name": "mem_usedPercent", "namespace": "AGT.ECS" }] }
响应参数
{ "http_code": 400, "message": { "details": "Some content in message body is not correct, error message: [from, to]",##from,to属性问题 "code": "ces.0014" }, "encoded_authorization_message": null }
案例二 必传字段没有传
filter必传字段没有传,更多必传字段请查询接口文档。
请求参数
{ "from": 1724119607020, "to": 1724123207020, "period": "1", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "238764d4-c4e1-4274-88a1-5956b057766b" }], "metric_name": "mem_usedPercent", "namespace": "AGT.ECS" }] }
响应参数
{ "http_code": 400, "message": { "details": "Some content in message body is not correct, error message: [filter]", ##filter属性问题 "code": "ces.0014" }, "encoded_authorization_message": null }
- HTTP状态码
404
错误码
APIGW.0101
可能原因
原因1:路径的URI与接口文档不一致。详见下方【案例一】
案例一 路径的URI与接口文档不一致
请求路径中URI中的版本号写错,应该为V1.0非V1。正确URI为/V1.0/{project_id}/batch-query-metric-data。
请求路径
POST /V1/04f9aca88c00d3202fd4c01ed679daf0/batch-query-metric-data
响应参数
{ "error_code": "APIGW.0101", "error_msg": "The API does not exist or has not been published in the environment", "request_id": "7d7a8258354300ac158c7b14a158d6ec" }
- HTTP状态码
401
错误码
ces.0015
可能原因
原因1:请求IAM获取Token中写的项目ID与调用批量查询监控数据接口接口使用的项目ID不同。
原因2:Token 过期。
原因3:Token内容复制过程少复制或多复制其他内容。
原因4:ak与sk不匹配。
定位思路
根据可能原因进行故障排查。
解决方法
原因1:请求IAM获取Token请求参数写的项目ID与调用批量查询监控数据接口使用的项目ID不同。
解决方法: 将获取Token请求参数中项目ID参数与调用批量查询监控数据接口使用的项目ID保存一致。
原因2:Token 过期。
解决方法: 重新生成Token。
原因3:Token内容复制过程少复制或多复制其他内容。
解决方法: 获取正确的Token。
原因4:ak与sk不匹配。
解决方法: 获取租户匹配的AK与SK。
案例
Token异常导致认证失败。
请求头
X-Auth-Token:MIIqDgYJKoZIhvcNAQcCoIIp-zCC......+6CIyAFrbHVxQZJ2Jq ##Token异常
请求参数
{ "from": 1724311893283, "to": 1724315493283, "period": "1", "filter": "average", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea69" }], "metric_name": "mem_usedPercent", "namespace": "AGT.ECS" }] }
响应参数
{ "http_code": 401, "message": { "details": "Authenticate failed.", "code": "ces.0015" }, "encoded_authorization_message": null }
- HTTP状态码
403
错误码
ces.0050
可能原因
原因1:用户策略中没有ces:metricData:list细粒度权限。详见下方【案例一】
案例一 用户策略中没有ces:metricData:list细粒度权限
用户策略中没有 ces:metricData:list 细粒度权限。需要在用户所属策略中添加该action。
请求头
X-Auth-Token:MIIqDgYJKoZIhvcNAQcCoIIp-zCC......+6CIyAFrbHVxQZJ2Jq
请求参数
{ "from": 1724311893283, "to": 1724315493283, "period": "1", "filter": "average", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea69" }], "metric_name": "mem_usedPercent", "namespace": "AGT.ECS" }] }
响应参数
{ "http_code": 403, "message": { "details": "Policy doesn't allow [ces:metricData:list] to be performed.", ##用户策略中没有 ces:metricData:list 细粒度权限 "code": "ces.0050" }, "encoded_authorization_message": null }
- HTTP状态码
429
错误码
ces.0429
可能原因
原因1:API被流控。详见下方【案例一】
案例一 API被流控
请求API被流控。 若API被流控,需第一时间找运维人员配置新的流程策略。
请求参数
{ "from": 1724311893283, "to": 1724315493283, "period": "1", "filter": "average", "metrics": [{ "dimensions": [{ "name": "instance_id", "value": "129718f5-833d-4f78-b685-6b1c3091ea69" }], "metric_name": "mem_usedPercent", "namespace": "AGT.ECS" }] }
响应参数
{ "http_code": 429, "message": { "details": "Too Many Requests.", "code": "ces.0429" }, "encoded_authorization_message": null }