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

Grafana Slack告警模板问题:多级别告警均显红色需区分

解决Grafana Slack告警颜色区分及多级别共存时统一红色显示问题

当前你的Grafana Slack告警模板无法正确按 severity 区分颜色,且未实现「三类告警同时触发时全部显示红色」的需求,导致所有告警均显示红色。以下是修改后的完整模板,可满足你的需求:

{{ define "slack_title" }}
  {{ if gt (len .Alerts.Firing) 0 }}
  🔥 {{ len .Alerts.Firing }} alert(s) firing
  {{ end }}
  {{ if gt (len .Alerts.Resolved) 0 }}
  ✅ {{ len .Alerts.Resolved }} alert(s) resolved
  {{ end }}
{{ end }}

{{ define "slack_message" }}
  {{ if gt (len .Alerts.Firing) 0 }}
    {{ range .Alerts.Firing }} {{ template "slack_alert_firing" .}} {{ end }} {{ end }}
  {{ if gt (len .Alerts.Resolved) 0 }}
    {{ range .Alerts.Resolved }} {{ template "slack_alert_resolved" .}} {{ end }} {{ end }}
{{ end }}

{{/* alert */}}
{{ define "slack_alert_firing" }}
🔥 Alert Fired
Cluster: {{ .Labels.Cluster }}
Instance: {{ reReplaceAll ":9100" "" .Labels.instance }}
Value: {{ .Annotations.Value }}
Node: {{ reReplaceAll "aks-" "" .Labels.nodename }}
Severity: {{ .Labels.severity }}
{{ end }}

{{ define "slack_alert_resolved" }}
✅ Alert Resolved
Cluster: {{ .Labels.Cluster }}
Instance: {{ reReplaceAll ":9100" "" .Labels.instance }}
Value: {{ .Annotations.Value }}
Node: {{ reReplaceAll "aks-" "" .Labels.nodename }}
Severity: Normal
{{ end }}

{{/* Color of Slack attachment (appears as line next to alert )*/}}
{{ define "slack.monzo.color" -}}
    {{ if eq .Status "firing" -}}
        {{/* 检查是否存在Critical级别的告警,存在则统一红色 */}}
        {{ $hasCritical := false }}
        {{ range .Alerts.Firing }}
            {{ if eq .Labels.severity "critical" }}
                {{ $hasCritical = true }}
            {{ end }}
        {{ end }}
        {{ if $hasCritical -}}
            danger
        {{/* 无Critical时检查是否有Warning,显示橙色 */}}
        {{- else -}}
            {{ $hasWarning := false }}
            {{ range .Alerts.Firing }}
                {{ if eq .Labels.severity "warning" }}
                    {{ $hasWarning = true }}
                {{ end }}
            {{ end }}
            {{ if $hasWarning -}}
                warning
            {{/* 仅Normal时显示绿色 */}}
            {{- else -}}
                good
            {{- end }}
        {{- end }}
    {{ else -}}
        good
    {{- end }}
{{- end }}

关键修改说明

  1. 多级别共存处理:遍历所有触发的告警,优先检查是否存在critical级别,只要有一个Critical告警,所有通知统一使用danger(红色)
  2. 分级颜色匹配:
    • Critical → danger(红色)
    • Warning(无Critical时)→ warning(橙色)
    • Normal(无Critical/Warning时)→ good(绿色)
  3. 恢复状态保持:告警恢复时仍使用good(绿色),符合Normal的颜色要求

原模板依赖CommonLabels.severity,但当存在多级别告警时,CommonLabels不会包含severity标签(标签值不统一),导致逻辑匹配错误,现在改为遍历所有触发告警的标签,确保判断准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:33:16