Skip to content
Learni
Voir tous les tutoriels
Monitoring

Comment configurer Alertmanager en 2026

Read in English

Introduction

Alertmanager est un composant clé de l'écosystème Prometheus, conçu pour gérer les alertes de manière intelligente. Contrairement à un simple forwarder, il groupe les alertes similaires, supprime les doublons et route les notifications vers divers canaux comme email, Slack ou PagerDuty. Pourquoi l'utiliser en 2026 ? Dans un monde où les infrastructures cloud scalent à l'infini, les alertes explosives (alert storms) peuvent noyer les équipes SRE. Alertmanager agit comme un triage médical : il priorise, inhibe les alertes redondantes et maintient la concentration sur les incidents critiques.

Ce tutoriel débutant vous emmène des bases (installation Docker) à une config production-ready. À la fin, vous saurez intégrer Alertmanager à Prometheus, configurer des receivers et tester en live. Idéal pour les ops qui veulent un monitoring robuste sans complexité inutile. (128 mots)

Prérequis

  • Docker installé (version 24+)
  • Prometheus v2.50+ en cours d'exécution (ou installé via Docker)
  • Connaissances basiques en YAML et ligne de commande
  • Port 9093 libre pour l'UI Alertmanager

Installation via Docker

docker-run-alertmanager.sh
docker run -d \
  --name alertmanager \
  -p 9093:9093 \
  -v $(pwd)/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
  prom/alertmanager:v0.27.0

Ce commande lance Alertmanager en conteneur Docker avec montage du fichier de config YAML. Le port 9093 expose l'interface web. Utilisez v0.27.0 pour la stabilité en 2026 ; évitez les tags latest en prod pour prévenir les breaking changes.

Accès à l'interface web

Une fois lancé, ouvrez http://localhost:9093. Vous verrez l'UI minimaliste : onglets Alerts, Silences, Status. Pas de config ? Les alertes échouent avec une erreur 422. Prochaine étape : la config de base.

Configuration de base YAML

alertmanager.yml
global:
  smtp_smarthost: 'localhost:1025'
  smtp_from: 'alertmanager@example.com'

route:
  group_by: ['alertname', 'cluster']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'email'

receivers:
- name: 'email'
  email_configs:
  - to: 'team@example.com'

inhibit_rules:
- source_match:
    severity: 'critical'
  target_match:
    severity: 'warning'
  equal: ['alertname', 'cluster']

Cette config de base définit un receiver email, une route globale qui groupe par nom d'alerte et cluster (attente 30s avant première notif, puis toutes les 5min). L'inhibit_rule bloque les warnings si un critical existe sur le même objet, évitant les spams redondants.

Redémarrage et vérification

Sauvegardez alertmanager.yml, puis docker restart alertmanager. Vérifiez les logs : docker logs alertmanager. Dans l'UI Status > Config, confirmez le chargement. Testez avec une alerte Prometheus pointant vers http://localhost:9093.

Intégration avec Prometheus

prometheus.yml
global:
  scrape_interval: 15s

rule_files:
  - "alert.rules.yml"

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093

scrape_configs:
- job_name: 'prometheus'
  static_configs:
  - targets: ['localhost:9090']

Ajoutez cette section alerting à votre prometheus.yml pour router les alertes vers Alertmanager. Redémarrez Prometheus. Créez un fichier alert.rules.yml simple pour tester (prochaine étape). Piège : oubliez alert_relabel_configs si vous filtrez.

Règles d'alerte Prometheus pour test

alert.rules.yml
groups:
- name: example
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} has been down for more than 5 minutes."

Ce rule file déclenche une alerte 'InstanceDown' si up == 0 pendant 5min. Labels et annotations enrichissent l'alerte pour Alertmanager. Collez-le dans votre Prometheus config et rechargez (curl -X POST http://localhost:9090/-/reload).

Configuration avancée : Receivers multiples

Analogie : Les receivers sont comme des boîtes aux lettres triées. Ajoutez Slack ou webhook pour diversifier.

Receivers Slack et Webhook

alertmanager-advanced.yml
global:
  smtp_smarthost: 'localhost:1025'

route:
  group_by: ['alertname']
  receiver: 'default'
  routes:
  - match:
      severity: critical
    receiver: 'slack-critical'

receivers:
- name: 'default'
  email_configs:
  - to: 'dev@team.com'

- name: 'slack-critical'
  slack_configs:
  - api_url: 'https://hooks.slack.com/services/T000/B000/C000'
    channel: '#alerts'
    text: '🚨 {{ .CommonAnnotations.summary }}'

- name: 'webhook'
  webhook_configs:
  - url: 'http://localhost:5001/'

inhibit_rules: []

Routes matchent la sévérité pour router vers Slack (seulement critical). Webhook pour intégrations custom (ex: PagerDuty). Remplacez api_url par votre webhook Slack réel. Redémarrez pour appliquer ; testez en silençant via UI.

Test d'alerte via curl

test-alert.sh
#! /bin/bash
curl -XPOST 'http://localhost:9093/api/v2/alerts' \
  -H 'Content-Type: application/json' \
  -d '[
    {
      "labels": {
        "alertname": "TestAlert",
        "severity": "warning",
        "instance": "test:8080"
      },
      "annotations": {
        "summary": "Ceci est un test"
      }
    }
  ]'

Ce script simule une alerte via l'API Alertmanager. Vérifiez l'UI Alerts pour la voir groupée. Utile pour debug sans Prometheus. Ajoutez -k si HTTPS self-signed.

Bonnes pratiques

  • Group_by intelligent : Toujours inclure alertname, job, instance pour un grouping fin sans spam.
  • Repeat_interval progressif : 4h pour info, 30min pour warning, 5min pour critical – escaladez la pression.
  • Sécuisez l'API : Activez basic_auth ou TLS en prod (--web.config.file).
  • Backup config : Versionnez alertmanager.yml en Git ; utilisez ConfigMaps Kubernetes.
  • Monitoring d'Alertmanager : Scrape /metrics avec Prometheus pour alerter sur ses downtimes.

Erreurs courantes à éviter

  • YAML mal indenté : Alertmanager crash sans logs clairs ; validez avec yamllint ou l'UI Status.
  • Pas de group_wait : Déclenche des milliers de notifs immédiates (alert storm).
  • Oubli inhibit_rules : Alerts enfants polluent (ex: disk full + OOMKill).
  • Ports non exposés : Vérifiez docker ps ; utilisez --network pour intégrer Prometheus.

Pour aller plus loin

  • Docs officielles : Alertmanager GitHub
  • Tutoriel Kubernetes : Helm chart Alertmanager
  • Avancé : Webhooks custom en Go
Découvrez nos formations Learni sur le monitoring pour maîtriser Prometheus, Grafana et Loki.