如何配置Prometheus Alertmanager在Slack告警中显示正确集群名
告警添加集群标识配置方法
两种实现方案,按需选择即可:
方案1:模板硬编码集群名(配置最简单,适合集群规模小的场景)
直接修改每个集群对应的alertmanager-config.yaml中Slack通知的标题和正文模板,写入当前集群的固定名称,修改后的核心配置片段如下:
alertmanager: config: global: resolve_timeout: 5m route: group_wait: 20s group_interval: 4m repeat_interval: 4h receiver: 'null' routes: - receiver: 'slack-k8s-admin' receivers: - name: 'null' - name: 'slack-k8s-admin' slack_configs: - api_url: 'https://hooks.slack.com/services/...' channel: '#k8s-monitoring' send_resolved: true icon_url: https://avatars3.githubusercontent.com/u/3380462 # 将<当前集群名称>替换为实际值,例如prod-shanghai-01、test-shenzhen-02 title: '[<当前集群名称>] [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification' text: >- {{ range .Alerts }} *Source Cluster:* `<当前集群名称>` *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}` *Description:* {{ .Annotations.description }} *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:> *Details:* {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}` {{ end }} {{ end }}
配置修改完成后执行更新命令生效:
helm upgrade prometheus prometheus-community/kube-prometheus-stack -n monitoring -f alertmanager-config.yaml
方案2:全局注入集群标签(更易维护,适合多集群长期管理场景)
通过Prometheus的外部标签能力,给当前集群所有告警统一注入cluster标签,后续所有通知渠道都可以直接引用该标签,不需要在每个通知模板里重复硬编码。
首先在alertmanager-config.yaml中增加Prometheus全局外部标签配置:
prometheus: prometheusSpec: externalLabels: # 替换为当前集群的唯一标识 cluster: <当前集群名称>
再修改Slack通知模板,直接引用注入的集群标签,不需要硬编码名称:
# 其余配置保持不变,仅修改title和text字段 title: '[{{ .CommonLabels.cluster }}] [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification' text: >- {{ range .Alerts }} *Source Cluster:* `{{ .Labels.cluster }}` *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}` *Description:* {{ .Annotations.description }} *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:> *Details:* {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}` {{ end }} {{ end }}
同样执行上述helm upgrade命令让配置生效即可。
注意:每个集群的配置文件中,集群名称字段必须设置为当前集群独有的值,禁止多集群复用相同名称,否则无法区分告警来源。
内容的提问来源于stack exchange,提问作者tobias
相关产品推荐
相关产品推荐

