使用REST API创建Azure Monitor警报规则时遇格式错误求助
解决Azure Monitor REST API创建警报规则的UnsupportedRequestContent错误
错误原因
你使用的是2016-03-01版本的Microsoft.Insights/alertrules API,这个旧版API不支持Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria类型的条件格式,这是导致请求内容不被支持的核心原因。旧版API使用的是完全不同的条件结构。
旧版API(2016-03-01)有效Payload示例
以下是符合该API版本的指标警报规则Payload:
{ "location": "westus", "properties": { "description": "Test Alert for TokenTransaction", "isEnabled": true, "severity": 2, "evaluationFrequency": "PT1M", "windowSize": "PT5M", "condition": { "odata.type": "Microsoft.Azure.Monitor.MetricAlertSingleResourceMultipleMetricCriteria", "metricName": "TokenTransaction", "metricNamespace": "Microsoft.CognitiveServices/accounts", "operator": "GreaterThan", "threshold": 50000, "timeAggregation": "Average", "dimensions": [ { "name": "FeatureName", "operator": "Include", "values": ["gpt-4"] } ] }, "actions": [], "scopes": [ "/subscriptions/subid/resourceGroups/tgname/providers/Microsoft.CognitiveServices/accounts/openainame" ] } }
关键修正点
- 将
odata.type改为旧版API支持的Microsoft.Azure.Monitor.MetricAlertSingleResourceMultipleMetricCriteria - 移除
allOf数组结构,旧版API直接在condition对象中定义单指标条件(若需多指标组合,需使用旧版对应的多条件格式) isEnabled的值改为布尔类型true而非字符串"true"
推荐使用新版Metric Alerts API(2018-03-01)
如果没有必须使用旧版API的限制,建议使用新版Microsoft.Insights/metricAlerts API(api-version=2018-03-01),它支持更灵活的条件配置,也更贴合你最初写的Payload结构。以下是对应示例:
{ "location": "global", "properties": { "description": "Test Alert for TokenTransaction", "severity": 2, "enabled": true, "evaluationFrequency": "PT1M", "windowSize": "PT5M", "criteria": { "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", "allOf": [ { "name": "metric1", "metricNamespace": "Microsoft.CognitiveServices/accounts", "metricName": "TokenTransaction", "operator": "GreaterThan", "threshold": 50000, "timeAggregation": "Average", "dimensions": [ { "name": "FeatureName", "operator": "Include", "values": ["gpt-4"] } ] } ] }, "scopes": [ "/subscriptions/subid/resourceGroups/tgname/providers/Microsoft.CognitiveServices/accounts/openainame" ], "actions": [] } }
新版API请求示例
PUT https://management.azure.com/subscriptions/subid/resourceGroups/rgname/providers/Microsoft.Insights/metricAlerts/rulename?api-version=2018-03-01 Authorization: Bearer <your-token> Content-Type: application/json
内容的提问来源于stack exchange,提问作者Murali
相关产品推荐
相关产品推荐

