Accueil

Prometheus + Grafana : Stack de monitoring complet

Monitoring
Difficulte: Advanced
16 min de lecture

Guide pas à pas pour installer et configurer une stack de monitoring avec Prometheus, Grafana et Alertmanager sur une infrastructure Linux.

Retour aux tutoriels

L'essentiel

  • La stack repose sur quatre briques et quatre ports : Prometheus (9090) qui va lui-même chercher les métriques en HTTP sur l'endpoint /metrics de chaque cible (modèle pull), node_exporter (9100) qui expose les métriques système, Grafana (3000) pour la visualisation et Alertmanager (9093) qui déduplique, groupe et route les alertes.
  • Validez toujours avant de redémarrer : promtool check config /etc/prometheus/prometheus.yml, promtool check rules pour les alertes et amtool check-config côté Alertmanager. Avec le flag --web.enable-lifecycle, un simple curl -X POST http://localhost:9090/-/reload recharge la configuration à chaud sans interrompre la collecte.
  • Trois requêtes PromQL couvrent l'essentiel : CPU 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100), mémoire (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 et latence histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))rate() ne s'applique qu'aux compteurs. Dans Grafana, importer le dashboard Node Exporter Full (ID 1860) donne ces vues sans écrire une seule requête.
  • Une règle d'alerte ne vaut que par son for:, qui filtre les pics passagers : up == 0 pendant 2 min pour une instance morte, CPU > 85 % pendant 5 min, disque > 85 % pendant 10 min. Côté Alertmanager, group_wait: 30s, group_interval: 5m et repeat_interval: 4h (1 h pour le critique) contiennent le bruit, et les inhibit_rules taisent les warnings dès qu'une alerte critique porte sur le même couple alertname/instance.
  • N'exposez jamais les ports 9090, 9100 et 9093 sur Internet. Prometheus gère l'authentification basique nativement depuis la version 2.24 via --web.config.file et un hash bcrypt généré par htpasswd -nBC 10 ; sinon, placez-le derrière un reverse proxy Nginx en TLS. Côté Grafana, changez le admin/admin par défaut et positionnez allow_sign_up = false.
Stack de monitoring Prometheus + Grafana
Ce tutoriel couvre le déploiement complet d'une stack de monitoring avec Prometheus pour la collecte de métriques, Grafana pour la visualisation, Node Exporter pour les métriques système et Alertmanager pour les notifications. À la fin de ce guide, vous disposerez d'une infrastructure de monitoring fonctionnelle capable de surveiller vos serveurs et de vous alerter en cas de problème.

Prérequis

  • Système d'exploitation : Debian 12+ ou Ubuntu 22.04+ (les commandes sont adaptables à CentOS/RHEL)
  • Privilèges : Accès root ou sudo sur le serveur de monitoring
  • Ressources : Minimum 2 Go de RAM et 20 Go d'espace disque (adapter selon le nombre de cibles)
  • Réseau : Ports 9090 (Prometheus), 9100 (Node Exporter), 3000 (Grafana), 9093 (Alertmanager) accessibles
  • Connaissances : Bases en administration Linux et en gestion de services systemd

Architecture de la stack

Prometheus fonctionne sur un modèle pull : c'est le serveur Prometheus qui interroge périodiquement les cibles pour récupérer leurs métriques. Ce modèle présente plusieurs avantages par rapport au push (type StatsD/Graphite) :

  • Prometheus : Serveur central qui collecte (scrape) les métriques via HTTP, les stocke localement sous forme de séries temporelles et évalue les règles d'alerte
  • Exporters : Agents légers qui exposent des métriques au format Prometheus sur un endpoint /metrics. Le plus courant est node_exporter pour les métriques système
  • Grafana : Interface de visualisation qui se connecte à Prometheus comme source de données pour créer des dashboards interactifs
  • Alertmanager : Composant qui reçoit les alertes déclenchées par Prometheus, les déduplique, les groupe et les route vers les bons destinataires (email, Slack, PagerDuty)

+------------------+       +-------------------+       +------------------+
|   Node Exporter  | <---- |    Prometheus      | ----> |   Alertmanager   |
|   (port 9100)    |       |    (port 9090)     |       |   (port 9093)    |
+------------------+       +-------------------+       +------------------+
                                    |
                                    v
                           +-------------------+
                           |     Grafana        |
                           |    (port 3000)     |
                           +-------------------+

Contenu Premium

Ce tutoriel avancé est réservé aux membres premium.

9,90€ / mois
  • Tous les tutoriels avancés
  • Nouveaux contenus chaque semaine
  • Suivi de progression
  • Annulation à tout moment
MR

Écrit par

Morgann Riu

Expert en cybersécurité et administration Linux. Je partage mes connaissances à travers des tutoriels gratuits et des formations pour aider les administrateurs systèmes et développeurs à sécuriser leurs infrastructures.

Questions fréquentes

Quelle est la différence entre Prometheus et Grafana ?
Prometheus est un système de collecte et de stockage de métriques basé sur un modèle pull : il interroge périodiquement les cibles pour récupérer leurs métriques. Grafana est un outil de visualisation qui se connecte à Prometheus (et à d'autres sources) pour créer des dashboards interactifs. Les deux sont complémentaires : Prometheus collecte, Grafana affiche.
Comment Prometheus collecte-t-il les métriques ?
Prometheus utilise un modèle pull : il envoie des requêtes HTTP GET sur un endpoint /metrics exposé par chaque cible. Les exporters (node_exporter, blackbox_exporter, etc.) convertissent les métriques système ou applicatives dans le format texte attendu par Prometheus. La fréquence de collecte est définie dans le scrape_interval de la configuration.
Peut-on utiliser Prometheus et Grafana en production ?
Oui, Prometheus et Grafana sont utilisés en production par de nombreuses entreprises (SoundCloud, DigitalOcean, CERN). Prometheus est conçu pour la fiabilité : chaque instance est autonome et fonctionne même si le réseau ou le stockage distant est indisponible. Pour la haute disponibilité, déployez deux instances Prometheus identiques et utilisez Thanos ou Cortex pour le stockage longue durée.
Qu'est-ce que PromQL et comment l'apprendre ?
PromQL (Prometheus Query Language) est le langage de requête de Prometheus. Il permet de sélectionner, filtrer, agréger et transformer les séries temporelles. Les fonctions essentielles sont rate() pour les compteurs, avg/sum/max pour l'agrégation, et histogram_quantile() pour les percentiles. La meilleure façon de l'apprendre est d'expérimenter dans l'interface Prometheus ou dans Grafana Explore.
Comment configurer des alertes avec Prometheus ?
Les alertes se configurent en deux étapes. D'abord, définissez des alerting rules dans Prometheus (fichiers YAML avec des expressions PromQL et des seuils). Ensuite, configurez Alertmanager pour router ces alertes vers les bons destinataires (email, Slack, PagerDuty). Alertmanager gère le groupement, le silencing et l'inhibition des alertes pour éviter le bruit.
Quels exporters Prometheus utiliser pour surveiller un serveur Linux ?
Le node_exporter est indispensable : il expose les métriques CPU, mémoire, disque, réseau et système de fichiers. Ajoutez le blackbox_exporter pour surveiller la disponibilité HTTP/TCP/ICMP, le mysqld_exporter pour MySQL/MariaDB, et le nginx-prometheus-exporter pour Nginx. Chaque exporter se déploie comme un service systemd indépendant.

Partager ce tutoriel

Cet article vous a plu ?

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Commentaires

Recommandé pour vous

Article de fond sur le sujet

Checklist Sécurité Linux

30 points essentiels pour sécuriser un serveur Linux. Recevez aussi les nouveaux tutoriels par email.

Pas de spam. Désabonnement en 1 clic.