[英]Display correct cluster name in Prometheus Alertmanager messages to Slack
我已经通过 helm 在 k8s 上安装了 kube-prometheus 堆栈:
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring -f alertmanager-config.yaml
其中alertmanager-config.yaml
如下所示:
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
title: '[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'
text: >-
{{ range .Alerts }}
*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 }}
配置后我可以收到警报,但是它们从不告诉我它们来自哪个集群:
因为,我确实有几个集群应该发送到同一个频道,所以最好能收到哪个集群有问题的通知。
你知道我必须如何调整配置吗?
您可以为每个集群的 kube-prometheus-stack 配置添加唯一的外部标签:
prometheus:
prometheusSpec:
externalLabels:
cluster: prod
你的警报会有这些标签
您可以按照其他答案中的指导从普罗米修斯的标签中读取集群名称。
另一种选择是为集群名称定义一个模板。
receivers:
- name: 'slack-notifications'
slack_configs:
- channel: '#lolcats'
send_resolved: true
text: '{{ template "slack.default-alert.text" . }}'
- name: 'null'
templates:
- '/etc/alertmanager/config/*.tmpl'
templateFiles:
template_1.tmpl: |-
{{ define "cluster" }}static-cluster-name{{ end }}
{{ define "slack.default-alert.text" }}
{{- $root := . -}}
... your template ...
{{ template "cluster" $root }}
{{ end }}
{{ end }}
如果您使用的是 prometheus-stack helm chart,则可以使用 Helm 中的占位符代替static-cluster-name
文本:
{{ define "cluster" }}{{ .ExternalURL | reReplaceAll ".*alertmanager\\.(.*)" "$1" }}{{ end }}
后者将读取先前在.ExternalURL
中定义的 Helm 值 .ExternalURL。 当然也可以使用您用来生成这些清单的任何工具的占位符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.