1. L'arbre de routage #
Chaque alerte descend l'arbre.
Principe #
Chaque alerte entre par la route racine puis descend dans la première route enfant dont les matchers correspondent (récursivement). Si aucune route enfant ne correspond, la route courante s'applique. Avec continue: true, l'évaluation poursuit vers les routes sœurs (pour notifier plusieurs destinataires).
route:
receiver: defaut
group_by: [alertname, cluster]
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
routes:
- matchers: ['team="db"']
receiver: dba-mail
routes:
- matchers: ['severity="critical"']
receiver: dba-pager
- matchers: ['team="web"']
receiver: web-slack
- matchers: ['alertname="Watchdog"']
receiver: deadman
repeat_interval: 1mLes trois délais #
| Paramètre | Défaut | Signification |
|---|---|---|
group_wait | 30s | Attente avant la première notification d'un nouveau groupe (pour y regrouper les alertes arrivant ensemble) |
group_interval | 5m | Attente avant de notifier un groupe déjà notifié qui a reçu de nouvelles alertes |
repeat_interval | 4h | Rappel d'un groupe inchangé toujours actif |
Bonne Pratique : Testez une route sans attendre une vraie alerte : amtool config routes test --config.file=alertmanager.yml team=db severity=critical affiche le récepteur choisi.2. Les récepteurs #
Où partent les notifications.
Exemples #
global:
smtp_smarthost: smtp.example.org:587
smtp_from: alertmanager@example.org
smtp_auth_username: alertmanager
smtp_auth_password_file: /etc/alertmanager/smtp_password
receivers:
- name: defaut
email_configs:
- to: ops@example.org
- name: dba-mail
email_configs:
- to: dba@example.org
- name: dba-pager
pagerduty_configs:
- routing_key_file: /etc/alertmanager/pagerduty_key
- name: web-slack
slack_configs:
- api_url_file: /etc/alertmanager/slack_url
channel: '#alertes-web'
send_resolved: true
title: '{{ .CommonLabels.alertname }} ({{ .Status }})'
text: '{{ range .Alerts }}• {{ .Annotations.summary }}{{ "\n" }}{{ end }}'
- name: teams
msteamsv2_configs:
- webhook_url_file: /etc/alertmanager/teams_url
- name: deadman
webhook_configs:
- url: https://hc-ping.com/<uuid>Autres intégrations natives : Opsgenie, VictorOps, Pushover, Telegram, Discord, Webex, SNS, Jira, Rocket.Chat... et le webhook générique pour tout le reste.
Bonne Pratique : Utilisez les variantes*_file(api_url_file,routing_key_file) pour garder les secrets hors du fichier de configuration versionné.
3. Les modèles de messages #
Des notifications lisibles.
Templates #
# alertmanager.yml
templates: ['/etc/alertmanager/templates/*.tmpl']{{/* templates/slack.tmpl */}}
{{ define "slack.titre" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }}{{ end }}
{{ define "slack.texte" }}{{ range .Alerts }}
*{{ .Annotations.summary }}*
{{ if .Annotations.runbook_url }}Runbook : {{ .Annotations.runbook_url }}{{ end }}
{{ end }}{{ end }}slack_configs:
- title: '{{ template "slack.titre" . }}'
text: '{{ template "slack.texte" . }}'