Azure Monitor告警未触发求助:基于事件ID缺失的告警配置
Azure Monitor告警Kusto查询问题排查与修正
问题核心
你尝试创建基于事件ID 9999不存在的Azure Monitor告警,原查询在Log Analytics中运行正常,但告警预览结果为0;调整查询排除无心跳条目后问题仍存在。
问题原因
- 原查询未按告警要求的时间窗口聚合:Azure Monitor告警需要查询返回带时间维度的聚合结果,原查询仅返回单条非时序记录,告警引擎无法正确解析。
- 调整后的查询通过
where CT =='B'过滤掉了无事件ID 9999的计算机(即你要监测的目标对象),导致核心告警数据被排除,预览自然无结果。
修正后的查询
let Heartbeat = Event | where EventID == 9999 | where Source == 'AIALERTS' | partition by Computer ( top 1 by TimeGenerated desc ); let Server = InsightsMetrics | distinct Computer; Server | join kind = leftouter Heartbeat on Computer // 对齐告警设置的5分钟聚合窗口 | extend TimeWindow = bin(now(), 5min) | extend HB = datetime_diff('Minute', now(), TimeGenerated) | extend Heart = iif(isnull(HB), 100, HB) // 按时间窗口+计算机生成符合告警要求的聚合结果 | summarize max(Heart) by TimeWindow, Computer
关键调整说明
- 新增
TimeWindow = bin(now(), 5min):匹配告警的5分钟聚合周期,生成告警引擎可识别的时序数据。 - 移除
where CT =='B'过滤逻辑:保留无事件ID 9999的计算机(对应Heart=100),这正是需要触发告警的目标。 - 用
summarize max(Heart) by TimeWindow, Computer生成标准告警数据集:每个5分钟窗口、每台计算机对应一条记录,确保告警引擎能基于阈值(>1)正确判断触发条件。
告警配置匹配要求
确保告警配置与查询完全对齐:
- 度量值选择
max_Heart(查询中聚合生成的列名) - 聚合周期设为5分钟
- 维度选择
Computer - 操作符设为大于,阈值设为1
内容的提问来源于stack exchange,提问作者Symon Turner
相关产品推荐
相关产品推荐

