Azure Monitor中VM CPU阈值告警去重及Azure DevOps集成问询
调整KQL查询与告警配置方案
一、修正KQL查询(计算1小时平均CPU并适配告警逻辑)
原查询存在两处不合理:一是summarize按Countervalue分组无意义,二是提前过滤单条数据的Countervalue>80会漏掉「单条没超但整体平均超标」的情况。修正后的查询如下:
Perf | where TimeGenerated > ago(1h) | where CounterName == "% Processor Time" and InstanceName == "_Total" | summarize AvgCPU = avg(CounterValue) by Computer // 按VM名称分组计算1小时平均CPU | where AvgCPU > 80 // 仅保留平均超80的VM
二、避免重复告警的配置(连续超标仅触发1次)
仅靠KQL无法实现重复告警抑制,需结合告警规则的抑制设置:
- 创建/编辑日志告警规则时,进入「高级选项」
- 开启「抑制告警」,设置抑制时长为3小时(可按需调整)
- 选择按
Computer维度抑制,确保同一VM连续超标时,3小时内只会触发1次告警
三、告警清除时自动关闭Azure DevOps工作项
需要通过动作组+自动化运行簿/逻辑应用实现:
- 创建动作组:在Azure Monitor中新建动作组,添加「自动化运行簿」或「逻辑应用」动作
- 编写自动化逻辑:
- 若用运行簿:编写PowerShell脚本,当接收到告警状态为「已解决」的通知时,调用Azure DevOps REST API,根据告警关联的工作项ID关闭对应项
- 若用逻辑应用:创建触发条件为「Azure Monitor告警」,添加「Azure DevOps - 更新工作项」步骤,设置状态为「关闭」,并通过告警上下文传递工作项ID
- 关联告警规则:将该动作组绑定到目标CPU告警规则,确保告警状态变更时触发逻辑
内容的提问来源于stack exchange,提问作者User100289
相关产品推荐
相关产品推荐

