如何配置Azure警报规则:API月度调用量达阈值时直接触发
解决Azure API管理当月调用量阈值警报的时间序列问题
你需要创建一个警报规则,当指定API当月累计调用次数超过1000次时触发,现有KQL查询返回单值统计,但被Azure警报解析为时间序列,无法直接按阈值触发,可通过以下方法解决:
步骤1:修改KQL查询,消除时间序列维度
原查询返回的count结果没有固定时间戳,Azure警报会自动尝试按时间维度生成序列。修改后的查询会添加一个固定的当月起始时间戳,让结果仅保留一行单值数据:
AzureDiagnostics | where ResourceId has "/subscriptions/000-000-000-000/resourceGroups/shared-prd-rg/providers/Microsoft.ApiManagement/service/customer-apim" | where apiId_s has "ApiName" | where TimeGenerated >= startofmonth(now()) and TimeGenerated < now() | summarize TotalCalls = count() | extend TimeGenerated = startofmonth(now()) // 添加固定时间戳,避免被解析为时间序列
步骤2:调整警报规则的测量配置
在Azure门户创建自定义日志警报时,按以下配置设置测量规则:
- 指标名称:选择查询中定义的
TotalCalls字段 - 聚合类型:选择总和(或“总计”,对应查询中的累计调用量)
- 聚合粒度:设置为与查询覆盖的时间范围一致(例如1个月,警报刷新频率可设为每天,确保每日检查当月累计数据)
- 阈值条件:选择大于,输入阈值1000
- 触发条件:设置为当连续1次满足条件时触发(因每次查询直接返回当月累计总量,无需多次验证)
这样配置后,警报会直接基于查询返回的单值累计量判断是否触发,不再受时间序列维度影响。
内容的提问来源于stack exchange,提问作者Cees
相关产品推荐
相关产品推荐

