Prometheus Alertmanager 是否支持配置动态告警名称?
Alertmanager 能否设置动态告警名称?
你给出的配置方式不可行
核心原因
Prometheus 告警规则中的 alert 字段为告警规则的静态标识,不支持 Go 模板语法渲染,你写在该字段中的 {{ $labels.serviceName }} 变量不会被替换为实际的标签值,最终生成的告警名称会原样保留模板语法字符串,达不到动态生成的效果。
只有告警规则下的 labels(自定义标签)和 annotations 两个字段支持模板变量解析,可以正常读取标签、采样值等动态内容。
推荐实现方案
如果需要携带服务名这类动态标识,可以采用以下两种方式实现:
- 把动态内容放到 annotations 字段中,比如你已经写的
summary字段就可以正常渲染服务名变量,通知接收端直接取该字段内容作为告警展示名即可 - 新增自定义标签承载动态名称,参考修正后的配置:
- alert: DependencyServiceUnhealthy expr: 100*avg_over_time(dependency_status{}[30m]) < 90 for: 1m labels: severity: warning action: page pager: pagerDutyService # 自定义标签支持模板渲染,可存储动态名称 dynamic_alert_name: "Dependency Status - {{ $labels.serviceName }} unhealthy" annotations: summary: "Dependency Unhealthy - Service: {{ $labels.serviceName }}" # 原配置嵌套双引号存在语法错误,外层改用单引号即可正常解析 information: 'Dependency Status availability rate over 30m for service {{ $labels.serviceName }} at {{ $value }}%'
内容的提问来源于stack exchange,提问作者Ken Tsoi
相关产品推荐
相关产品推荐

