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 :
correspondancepour des étiquettes exactescorrespondance_regexpour des motifs dynamiques- Le paramètre
delai_attente_groupeagrè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.