如何通过Azure Monitor REST API单次请求获取多聚合指标值?
解决Azure Monitor REST API同时获取多聚合指标的问题
先把参数格式改对
你得确保请求里的aggregation参数是逗号分隔无空格的多聚合值,比如:
aggregation=average,minimum,maximum
很多时候只返回average,就是因为参数写错了——比如加了空格,或者格式不对。
确认指标支持这些聚合方式
不是所有Service Bus指标都同时支持average、minimum、maximum这三种聚合。比如有些计数类指标只支持total。你可以:
- 去Azure门户里看该指标的聚合选项,能选的就是支持的类型
- 调用Azure Monitor的
metric definitionsAPI,查询目标指标支持的聚合列表
完整请求示例
以Service Bus队列的ActiveMessages指标为例,正确的请求URL应该是这样(替换占位符):
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/providers/microsoft.insights/metrics?api-version=2023-10-01&metricnames=ActiveMessages&aggregation=average,minimum,maximum&interval=PT1H
注意interval要设置合理的时间间隔,不然可能没有对应聚合数据。
正确响应格式
请求没问题的话,响应里的data部分就会包含所有指定的聚合字段,和你期望的一致:
"data": [ { "timeStamp": "2021-04-20T09:00:00Z", "average": 7, "minimum": 7, "maximum": 7 } ]
常见坑点排查
- 检查
Authorization令牌是否有效,权限是否足够(至少需要Monitoring Reader角色) - 确认你指定的指标确实支持这三种聚合方式
aggregation参数里绝对不能加空格,必须是纯逗号分隔的字符串
内容的提问来源于stack exchange,提问作者Min
相关产品推荐
相关产品推荐

