Zum Hauptinhalt springen

Alertmanager

Alertmanager ist ein Bestandteil von NKE, der dir die Überwachung deiner Applikationen ermöglicht.

Verfügbarkeit

Alertmanager ist als optionaler Service für NKE verfügbar und kann im Cockpit erstellt werden.

Nutzung

Alertmanager konfigurieren

Alertmanager ist die Komponente, die im Falle von Prometheus-Warnungen dafür zuständig ist, Benachrichtigungen zu versenden. Alertmanager unterstützt dabei eine Reihe an Benachrichtigungskanälen wie etwa Slack, E-Mail, Hipchat, PagerDuty, etc. Bitte schau dir die offizielle Dokumentation an, um detaillierte Informationen über die Konfiguration zu erhalten. Wir bieten auch Beispielkonfigurationen an.

Wenn eine Alertmanager-Instanz erstellt wird, sind standardmässig keine Benachrichtigungsempfänger konfiguriert. Du musst selbst die gesamte Alertmanager-Konfiguration erstellen und uns diese zusenden. Am besten erstelle dazu ein Secret in deinem Cluster und fülle es mit der gewünschten Konfiguration. Wir fügen die Alertmanager-Konfiguration dann der Instanz zu. Bitte beachte, dass dies nur ein vorübergehender Prozess ist. Bald wirst du Alertmanager selbst im Cockpit konfigurieren können.

Beispiele Alertmanager-Konfiguration

1. Alle Warnungen werden per E-Mail versendet

global:
resolve_timeout: 5m
route:
receiver: "email"
group_by: ["alertname"]
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
routes: []
receivers:
- name: "email"
email_configs:
- to: "monitoring-alerts-list@your-domain.ch"
send_resolved: true
# when using STARTTLS (port 587) this needs to be 'true'
require_tls: false
from: "Alertmanager@your-domain.ch"
smarthost: smtp.your-domain.ch:465
auth_username: "Alertmanager@your-domain.ch"
auth_password: "verysecretsecret"
headers: { Subject: "[Alert] Prometheus Alert Email" }

2. Alle kritischen Warnungen werden über Slack versendet. Bei allen anderen Warnstufen werden die Meldungen per E-Mail versendet. Bitte stelle sicher, dass du deinen Warnungen einen Schweregrad (Severity) zuweist.

global:
resolve_timeout: 5m
route:
# this specifices the default receiver which will be used if no route matches
receiver: "email"
group_by: ["alertname"]
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
routes:
- receiver: "slack"
match_re:
severity: "[cC]ritical"
receivers:
- name: "email"
email_configs:
- to: "monitoring-alerts-list@your-domain.ch"
send_resolved: true
# when using STARTTLS (port 587) this needs to be 'true'
require_tls: false
from: "Alertmanager@your-domain.ch"
smarthost: smtp.your-domain.ch:465
auth_username: "Alertmanager@your-domain.ch"
auth_password: "verysecretsecret"
headers: { Subject: "[Alert] Prometheus Alert Email" }
- name: "slack"
slack_configs:
- send_resolved: true
api_url: https://hooks.slack.com/services/s8o3m2e0r8a8n2d/8snx2X983
channel: "#alerts"

3. Alle Warnungen der Produktionsumgebung werden über Slack versendet. Alle anderen Warnungen werden ignoriert. Bitte stelle sicher, dass du das Label 'Environment' (Umgebung) in deinen Meldungen definierst.

global:
resolve_timeout: 5m
route:
# this specifices the default receiver which will be used if no route matches
receiver: "devnull"
group_by: ["alertname"]
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
routes:
- receiver: "slack"
match:
environment: production
receivers:
- name: "slack"
slack_configs:
- send_resolved: true
api_url: https://hooks.slack.com/services/s8o3m2e0r8a8n2d/8snx2X983
channel: "#alerts"
- name: devnull

4. Benachrichtigungen werden über eine Vorlage angepasst und alle Warnungen werden über Slack versendet. Hier definieren wir einige Vorlagen in der Datei 'slack.tmpl'.

Dateiname: Alertmanager.yaml

global:
resolve_timeout: 5m
# THIS LINE IS VERY IMPORTANT AS OTHERWISE YOUR TEMPLATES WILL NOT BE LOADED
templates:
- "/etc/alertmanager/config/*.tmpl"
route:
receiver: "slack"
group_by: ["alertname"]
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
routes: []
receivers:
- name: "slack"
slack_configs:
- send_resolved: true
api_url: https://hooks.slack.com/services/s8o3m2e0r8a8n2d/8snx2X983
channel: "#alerts"
pretext: "{{ .CommonAnnotations.description }}"
text: '{{ template "slack.myorg.text" . }}'

Dateiname: slack.tmpl

{{ define "slack.myorg.text" -}}
{{ range .Alerts -}}
*Alert:* {{ .Labels.alertname }} - `{{ .Labels.severity }}`
*Description:* {{ .Annotations.description }}
*Details:*
{{ range .Labels.SortedPairs -}}
• *{{ .Name }}:* `{{ .Value }}`
{{ end -}}
{{ template "slack.default.text" . }}
{{ end -}}
{{ end -}}

Videoanleitungen

Sieh dir unsere Videoanleitungen für die GKE Applikations-Überwachung an. Die Videos basieren zwar auf unserem GKE-Produkt, die Konzepte sind allerdings die gleichen.