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

如何在Grafana中使用自定义模板按标签分组告警?

按标签分组告警的模板实现

要实现按branch标签分组展示告警,你可以利用Go模板的变量和映射(map)来手动完成分组逻辑,以下是具体的实现方案:

完整模板代码

{{/* 初始化一个map,用来存储每个branch对应的告警列表 */}}
{{- $groupedAlerts := dict -}}

{{/* 遍历所有触发的告警,将它们按branch分类到map中 */}}
{{- range .Alerts.Firing -}}
  {{- $branch := .Labels.branch -}}
  {{- if not (index $groupedAlerts $branch) -}}
    {{- $_ := set $groupedAlerts $branch list -}}
  {{- end -}}
  {{- $_ := append (index $groupedAlerts $branch) . -}}
{{- end -}}

{{/* 遍历分组后的map,输出每个branch的告警 */}}
{{- range $branch, $alerts := $groupedAlerts -}}
Branch {{ $branch }}
--------
{{- range $alerts -}}
{{ .Labels.test_plan }}, job: {{ .Labels.id }}, Link: ...
{{- end -}}

{{- end -}}

代码说明

  1. 初始化分组映射:用dict创建空映射$groupedAlerts,键为branch标签值,值为对应分支下的告警列表。
  2. 填充分组数据:
    • 遍历所有触发告警,提取当前告警的branch值
    • 若映射中无该分支的键,用set初始化一个空列表
    • 将当前告警追加到对应分支的列表中
  3. 输出分组内容:
    • 遍历映射的键值对,先输出分支标题和分隔线
    • 再遍历该分支下的所有告警,仅输出非重复字段(test_plan、job、链接)

效果验证

用你提供的示例数据,模板会输出:

Branch A
--------
1, job: aaa, Link: ...
2, job: bbb, Link: ...

Branch B
--------
3, job: ccc, Link: ...
4, job: ddd, Link: ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:08:11