如何在Grafana Teams联系人点中准确解析告警模板的主题与描述字段
解决Grafana Teams联系人点模板解析为空的问题
你的问题出在当前模板是将subject和description合并输出为一段文本,但Teams联系人点的「标题」和「消息」是两个独立的输入区域,无法直接从这段文本中拆分出对应的值。以下是两种可行的解决方法:
方法一:拆分独立模板
分别定义用于标题和消息的模板,然后在对应区域引用:
- 在Grafana通知模板中添加两个独立模板:
{{ define "teams_subject" }} {{ if gt (len .Alerts.Firing) 0 }} {{ range .Alerts }} {{ .Annotations.summary }} {{ end }} {{ else }} issue_resolved {{ end }} {{ end }} {{ define "teams_description" }} {{ if gt (len .Alerts.Firing) 0 }} {{ range .Alerts }} {{ .Annotations.description }} {{ end }} {{ else }} issue_resolved {{ end }} {{ end }}
- 在Teams联系人点设置中:
- 「标题」区域填写:
{{ template "teams_subject" . }} - 「消息」区域填写:
{{ template "teams_description" . }}
方法二:直接在字段中编写模板逻辑
无需单独定义模板,直接在Teams的两个输入区域中写入针对性的模板代码:
- 「标题」区域代码:
{{ if gt (len .Alerts.Firing) 0 }} {{ range .Alerts }} {{ .Annotations.summary }} {{ end }} {{ else }} issue_resolved {{ end }}
- 「消息」区域代码:
{{ if gt (len .Alerts.Firing) 0 }} {{ range .Alerts }} {{ .Annotations.description }} {{ end }} {{ else }} issue_resolved {{ end }}
注意事项
- 移除原模板中
**subject**:这类前缀,Teams标题/消息只需要纯值内容,多余的前缀会导致内容不符合预期。 - 如果存在多个触发告警,
range会遍历所有告警并拼接内容,可根据需要添加分隔符(比如在range块内加<br>实现换行)。 - 确认告警的Annotations中确实存在
summary和description字段,否则会输出空值。
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

