You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana v9.5.0告警配置:根据告警标签设置动态邮件主题

解决Grafana 9.5.0动态邮件主题配置问题

问题分析

你之前的模板失效主要有两个原因:

  1. 错误使用了单数的.Alert上下文,Grafana告警模板中邮件主题的上下文是复数.Alerts(数组类型),单条告警也会被包裹在数组里。
  2. 遍历标签的语法错误,直接遍历.Alerts.Labels会因为路径不存在导致输出为空。

正确配置步骤

1. 确保告警规则包含目标标签

先确认你的告警规则中已经添加了serviceName标签,值需从Logstash的日志字段中映射(比如在告警规则的Labels配置里设置:serviceName: {{ $labels.serviceName }},具体字段名根据你的Logstash数据结构调整)。

2. 替换邮件主题模板

使用以下模板实现动态主题,支持单条/多条告警场景,同时处理标签缺失的兜底情况:

{{ define "email.subject" }}
{{- with index .Alerts 0 }}
  {{- if .Labels.serviceName }}
    {{ .Labels.serviceName }} 出现故障
  {{- else }}
    未知服务出现故障
  {{- end }}
{{- else }}
  告警通知:服务异常
{{- end }}
{{ end }}

如果需要包含环境信息(比如你之前提到的SYST env),可以扩展模板:

{{ define "email.subject" }}
{{- with index .Alerts 0 }}
  {{- if .Labels.serviceName }}
    {{ .Labels.serviceName }} 在 {{ .Labels.env | default "SYST" }} 环境出现故障
  {{- else }}
    未知服务在 {{ .Labels.env | default "SYST" }} 环境出现故障
  {{- end }}
{{- else }}
  {{ .Labels.env | default "SYST" }} 环境服务异常告警
{{- end }}
{{ end }}

3. 模板生效方式

进入Grafana的Alerting -> Contact points,找到对应的邮件联系人点,在Message templates区域的Email subject输入框中替换为上述模板即可。

关键语法说明

  • index .Alerts 0:从告警数组中取出第一条告警(多数场景下邮件会聚合同类型告警,取第一条即可)
  • with语句:避免空指针异常,当.Alerts为空时执行兜底逻辑
  • .Labels.serviceName:直接引用告警规则中定义的标签键,需与你配置的标签名完全一致

内容的提问来源于stack exchange,提问作者eirugn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:19:59