Démystifier la Configuration d'Alertmanager dans Prometheus

Alertmanager gère les notifications générées par Prometheus après déclenchement de règles d'alerte. Son fichier de configuration définit les flux de routage, les méthodes de notification et les stratégies de regroupement. Voici une analyse technique des composants clés avec des exemples restructurés.

Intégration Prometheus-Alertmanager

Le fichier principal de Prometheus (prometheus.yml) référence Alertmanager via la section alerting et charge les règles d'aelrte :

# Configuration globale
global:
  interval_collecte: 15s
  interval_evaluation: 15s

alerting:
  gestionnaires_alertes:
    - configuration_statique:
        - cibles: ["monitoring-backend:9093"]

fichiers_regles:
  - /etc/prometheus/regles/serveurs.yml
  - /etc/prometheus/regles/bases-de-donnees.yml
  - /etc/prometheus/regles/apis.yml

Exemple de règles d'alerte

Les fichiers de règles (*.yml) définissent les seuils de déclenchement :

groupes:
- nom: surveillance_serveurs
  regles:
  - alerte: Connexions_TCP_Excessives
    expression: >
      tcp_active_connections{dimension="active",protocole="ipv4"} > 500
    pendant: 30s
    etiquettes:
      gravite: critique
    annotations:
      resume: "[{{ $labels.instance }}] Connexions TCP anormales"
      detail: "Seuil dépassé: {{ $value }} connexions"

- nom: surveillance_memoire
  regles:
  - alerte: Utilisation_Memoire_Elevee
    expression: >
      (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 90
    pendant: 2m
    etiquettes:
      gravite: avertissement
    annotations:
      resume: "[{{ $labels.host }}] Mémoire système critique"

Configuration détaillée d'Alertmanager

Le fichier alertmanager.yml orchestre le traitement des alertes :

global:
  delai_resolution: 10m
  smtp_hote: 'smtp.example.com:587'
  smtp_expediteur: 'alertes@infrastructure.local'
  smtp_auth_mdp: 'token_securise'
  tls_obligatoire: true

modeles: ['/etc/alertmanager/modeles/*.tmpl']

routage:
  recepteur_par_defaut: equipes_support
  regrouper_par: ['alertname', 'service']
  delai_attente_groupe: 15s
  intervalle_groupe: 3m
  intervalle_repetition: 1h
  sous_routages:
    - recepteur: equipe_db
      correspondance:
        composant: 'base-de-donnees'
        environnement: 'production'

    - recepteur: equipes_dev
      correspondance_regex:
        projet: '^(web|api)-.*'

recepteurs:
- nom: equipes_support
  configurations_email:
    - destinataire: 'support-tech@entreprise.local'
      html: '{{ template "alert.html" . }}'
      en_tetes: { Objet: "[{{ .Status | toUpper }}] {{ .CommonAnnotations.summary }}" }

- nom: equipe_db
  configurations_email:
    - destinataire: 'dba@entreprise.local'
      serveur_webhook:
        url: 'https://chat.internal/hooks/db-alerts'
        format_json: |
          {
            "message": "{{ .CommonAnnotations.summary }}",
            "severity": "{{ .Status }}"
          }

Mécanismes de routage avancés

La hiérarchie de routage utilise :

  • correspondance pour des étiquettes exactes
  • correspondance_regex pour des motifs dynamiques
  • Le paramètre delai_attente_groupe agrège les alertes similaires

Les templates HTML personnalisés (modeles/*.tmpl) structurent le contenu des notifications en utilisant la syntaxe Go template avec accès aux champs .Status, .Labels et .Annotations.

Étiquettes: Prometheus Alertmanager YAML Monitoring observability

Publié le 20 août à 13h48