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

如何在Grafana 9.0告警邮件主题模板中获取主机名?

Grafana 9.0邮件告警模板获取主机名解决方案

问题原因

.CommonLabels仅包含所有触发告警共同拥有的标签,你的主机名标签(host)属于单个告警独有的标识,因此不在CommonLabels集合内,直接调用.CommonLabels.host或.CommonLabels.hostname自然无效。

解决方案

根据告警触发的数量,分两种场景处理:

1. 单告警触发场景(多数情况)

直接取触发告警数组中第一个告警的host标签,修改后的模板如下:

{{ define "xxx.email.subject" }}
{{ if .Alerts.Firing -}}[{{toUpper .Status}}:{{ len .Alerts.Firing }}] {{ .CommonLabels.alertname }} - {{ .Alerts.Firing[0].Labels.host }}
{{ end }}
{{ if .Alerts.Resolved -}}[{{ .Status}}:{{ len .Alerts.Resolved }}] {{ .Alerts.Resolved[0].Labels.host }}
{{ end }}
{{ end }}

2. 多告警触发场景(一次触发多主机告警)

遍历所有触发/恢复的告警,将主机名用逗号分隔展示,模板示例:

{{ define "xxx.email.subject" }}
{{ if .Alerts.Firing -}}[{{toUpper .Status}}:{{ len .Alerts.Firing }}] {{ .CommonLabels.alertname }} - {{ range $index, $alert := .Alerts.Firing }}{{ if $index }}, {{ end }}{{ $alert.Labels.host }}{{ end }}
{{ end }}
{{ if .Alerts.Resolved -}}[{{ .Status}}:{{ len .Alerts.Resolved }}] {{ range $index, $alert := .Alerts.Resolved }}{{ if $index }}, {{ end }}{{ $alert.Labels.host }}{{ end }}
{{ end }}
{{ end }}

注意事项

确保模板中使用的标签键是host,而非hostname——你之前在告警规则中通过{{ $values.B0.Labels.host }}能正常获取,说明数据源中主机名的标签键确实是host。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:45:04