Grafana无法查询告警:如何统计各监控目标的活跃告警数?
解决方案
1. 利用Grafana内置告警指标
Grafana原生告警会暴露内部监控指标,你可以通过默认的Grafana内置Prometheus数据源查询这些指标,核心可用指标:
grafana_alerting_alert_state:记录每个告警实例的状态,标签包含告警规则名(alertname)、监控目标标识(比如instance/job,需和你的目标属性标签对应)- 状态值说明:
1代表活跃告警(alerting状态),0代表正常
2. 编写PromQL统计目标活跃告警数
假设你的监控目标用instance标签存储IP/名称,且告警规则已关联该标签,用以下查询统计每个目标的活跃告警数:
sum by (instance) (grafana_alerting_alert_state{state="alerting"})
如果目标用其他标签(比如target)标识,替换instance即可。
3. 表格面板整合目标属性与告警数
步骤1:拉取目标属性
在表格面板的查询编辑器中,第一个查询用任意带目标标签的指标(比如up指标,每个目标都会上报):
up
添加Labels to Fields转换,将需要的标签(如instance、job、target_name)转为表格列。
步骤2:拉取告警数统计
第二个查询用之前的PromQL统计语句,同样添加Labels to Fields转换,将值列重命名为活跃告警数。
步骤3:合并结果
添加Join转换,选择基于目标标识标签(如instance)进行左连接,即可将目标属性和对应告警数合并到同一表格。
4. 特殊场景处理
- 告警规则未关联目标标签:修改告警规则,在查询中保留目标标识标签,或在告警规则的
Labels中手动添加目标相关标签,确保grafana_alerting_alert_state能带上目标标识。 - 使用外部Alertmanager:查询Alertmanager的
alertmanager_alerts指标,按目标标签分组统计:
sum by (instance) (alertmanager_alerts{status="firing"})
内容的提问来源于stack exchange,提问作者sOltan
相关产品推荐
相关产品推荐

