Architecture Prometheus + Grafana
Le duo open-source de référence
Prometheus collecte et stocke des métriques dans le temps. Grafana les visualise sous forme de tableaux de bord. Ensemble, ils forment l'une des piles de supervision open-source les plus utilisées.
Comment Prometheus collecte les données
Contrairement à un modèle où chaque application "pousse" ses métriques, Prometheus fonctionne en pull : il interroge (scrape) périodiquement des endpoints HTTP exposés par les systèmes surveillés.
flowchart LR
Prometheus -->|scrape /metrics toutes les 15s| App1[Application]
Prometheus -->|scrape /metrics| App2[Serveur]
Prometheus -->|scrape /metrics| App3[Base de données]
Prometheus --> Storage[(Base de séries temporelles)]
Grafana -->|requêtes PromQL| Prometheus
PromQL : interroger les métriques
# CPU moyen sur les 5 dernières minutes
avg(rate(cpu_usage_seconds_total[5m]))
# Taux d'erreur HTTP 5xx sur 10 minutes
sum(rate(http_requests_total{status=~"5.."}[10m]))
Alertmanager : router les alertes
Alertmanager reçoit les alertes déclenchées par Prometheus et les route vers les bons canaux (email, Slack, SMS) selon des règles, avec regroupement et suppression des doublons.
Cas concret
Une équipe configure Prometheus pour scraper un serveur toutes les 15 secondes. Le serveur tombe en panne totale au bout de 5 secondes après un scrape réussi : Prometheus détecte l'absence de réponse au scrape suivant (10 secondes plus tard maximum), déclenchant une alerte de service indisponible avant même qu'un utilisateur ne signale le problème.
Erreurs fréquentes
- Scraper trop rarement (ex. toutes les 5 minutes) : détection tardive des pannes, données peu précises pour le débogage.
- Scraper trop fréquemment sans besoin réel : surcharge inutile des systèmes surveillés et du stockage Prometheus.
- Construire des dashboards Grafana sans alerte associée : un dashboard n'est utile que si quelqu'un le regarde, une alerte prévient activement.
À retenir
- Prometheus fonctionne en pull (scrape), pas en push, contrairement à d'autres outils.
- PromQL est le langage de requête pour interroger et agréger les métriques stockées.
- Alertmanager route et déduplique les alertes vers les bons canaux.
Mini-exercice
Un serveur tombe en panne juste après un scrape Prometheus réussi. Combien de temps maximum avant que Prometheus ne détecte l'absence de réponse, si l'intervalle de scrape est de 30 secondes ?
Réponse : environ 30 secondes maximum, le temps du prochain cycle de scrape prévu, moment où Prometheus constatera l'absence de réponse et pourra déclencher une alerte.