DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesSurveiller ses applications avec Prometheus et Grafana04 - Configurer des alertes avec Alertmanager

Détails

  • 30 minutes
  • Intermédiaire

Objectifs

  • Écrire des règles d'alerte Prometheus en YAML
  • Déployer Alertmanager et configurer les routes et receivers
  • Comprendre les états PENDING, FIRING, RESOLVED
Module Surveiller ses applications avec Prometheus et Grafana

Exercice 04 : Configurer des alertes avec Alertmanager

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Écrire des règles d'alerte dans alerting_rules.yml
  • ✅ Déployer Alertmanager et comprendre alertmanager.yml
  • ✅ Distinguer les états PENDING, FIRING et RESOLVED
  • ✅ Relier Alertmanager à Prometheus via la section alerting:
  • ✅ Déclencher manuellement une alerte pour tester le pipeline

Durée estimée : 30 minutes

Difficulté : ⭐⭐⭐☆☆ (Intermédiaire)

Prérequis : Exercices 01 et 02 complétés


📖 Contexte

Prometheus évalue des règles d'alerte à intervalle régulier. Quand une condition est remplie, l'alerte passe en PENDING. Après la durée for:, elle passe en FIRING et est envoyée à Alertmanager. Alertmanager se charge du routage, du groupement et des notifications (email, Slack, PagerDuty...).


📋 Énoncé

Configurez un pipeline d'alerting complet : règles Prometheus → Alertmanager → notification email (simulation).


🧭 Déroulement de l'exercice

Tâche 1 : Écrire des règles d'alerte

Créez alerting_rules.yml avec 2 règles : une alerte si un target est DOWN, une alerte si Prometheus utilise plus de 100 MB de RAM.

Indice :

`yaml

groups:

- name: infra.rules

rules:

- alert: TargetDown

expr: up == 0

for: 1m

labels:

severity: critical

annotations:

summary: "Target {{ $labels.job }} est DOWN"

description: "Le target {{ $labels.instance }} ne répond plus depuis 1 minute."

>

- alert: PrometheusHighMemory

expr: process_resident_memory_bytes{job="prometheus"} > 100 * 1024 * 1024

for: 2m

labels:

severity: warning

annotations:

summary: "Prometheus utilise beaucoup de mémoire"

description: "Utilisation actuelle : {{ $value | humanizeBytes }}"

`

Vérification : Le YAML est valide. docker run --rm -v $(pwd):/rules prom/prometheus promtool check rules /rules/alerting_rules.yml retourne SUCCESS.


Tâche 2 : Mettre à jour prometheus.yml

Ajoutez les références aux règles d'alerte et à Alertmanager dans prometheus.yml.

Indice :

`yaml

rule_files:

- "alerting_rules.yml"

>

alerting:

alertmanagers:

- static_configs:

- targets: ["alertmanager:9093"]

`

Vérification : Après rechargement (curl -X POST http://localhost:9090/-/reload), allez dans Status → Rules dans Prometheus UI. Les 2 règles apparaissent avec l'état OK.


Tâche 3 : Configurer Alertmanager

Créez alertmanager.yml qui route toutes les alertes vers un receiver de debug (webhook ou email).

Indice :

`yaml

global:

smtp_smarthost: "localhost:25"

smtp_from: "alertmanager@exemple.fr"

>

route:

group_by: ["alertname", "job"]

group_wait: 30s

group_interval: 5m

repeat_interval: 4h

receiver: "default"

>

receivers:

- name: "default"

webhook_configs:

- url: "http://webhook-debug:5001/alert"

send_resolved: true

`

Vérification : docker run -d --name alertmanager -p 9093:9093 -v $(pwd)/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager démarre sans erreur. curl http://localhost:9093/-/healthy retourne OK.


Tâche 4 : Observer les états d'alerte

Arrêtez Node Exporter pour déclencher une alerte : docker stop node-exporter. Observez l'évolution dans Alerts de Prometheus UI.

Indice : L'alerte passe en PENDING immédiatement, puis en FIRING après for: 1m. Dans Alertmanager UI (http://localhost:9093), l'alerte apparaît dans les alertes actives. Redémarrez Node Exporter avec docker start node-exporter pour la résoudre.

Vérification : Vous observez la transition PENDING → FIRING dans Prometheus UI → Alerts. L'alerte TargetDown apparaît dans Alertmanager UI.


Tâche 5 : Configurer un receiver email

Mettez à jour alertmanager.yml pour envoyer des emails (utilisez MailHog comme serveur SMTP de test).

Indice :

`yaml

# Lancer MailHog : docker run -d --name mailhog -p 1025:1025 -p 8025:8025 mailhog/mailhog

>

global:

smtp_smarthost: "mailhog:1025"

smtp_from: "alertmanager@devopsfacile.fr"

>

receivers:

- name: "default"

email_configs:

- to: "ops@devopsfacile.fr"

require_tls: false

`

Vérification : Déclenchez une alerte, puis ouvrez http://localhost:8025 (MailHog UI). L'email d'alerte est visible dans la boîte de réception.


🗂️ Mini-Projet

Créez un docker-compose.yml complet avec Prometheus + Alertmanager + MailHog et une règle d'alerte sur le CPU :

yaml
groups:
  - name: system.rules
    rules:
      - alert: HighCPU
        expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "CPU élevé sur {{ $labels.instance }}"
          description: "CPU à {{ $value | humanize }}%"

Checkpoints :

  • docker compose up -d démarre les 3 services
  • Les règles d'alerte s'affichent dans Status → Rules
  • L'alerte TargetDown se déclenche en arrêtant un service
  • L'email d'alerte est reçu dans MailHog

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Écrire des règles d'alerte
  • Tâche 2 : Mettre à jour prometheus.yml
  • Tâche 3 : Configurer Alertmanager
  • Tâche 4 : Observer les états d'alerte
  • Tâche 5 : Configurer un receiver email
  • 🗂️ Mini-Projet