Grafana
L'outil de référence pour visualiser des métriques : tu lui branches une source de données (Prometheus, PostgreSQL, Loki…) et tu construis des dashboards interactifs où chaque graphique répond à une question.
Grafana ne stocke pas de données : il interroge des sources externes. La plus courante en MLOps est Prometheus, qui collecte et stocke les métriques de tes services. Grafana se branche dessus pour les afficher. Si tu n'as pas encore lu la fiche Prometheus, commence par là — Grafana sans source de données, c'est juste une UI vide.
À quoi ça sert
Tu as des métriques quelque part (Prometheus, une base SQL, des logs…). Tu veux les voir : courbes dans le temps, jauges, alertes quand un seuil est dépassé, le tout dans un tableau de bord partageable avec ton équipe.
Grafana fait exactement ça :
- Dashboards — des pages web composées de panels (graphiques, jauges, tableaux). Chaque panel exécute une requête sur une source de données.
- Sources de données — Prometheus, PostgreSQL, MySQL, Loki (logs), Tempo (traces), CSV, Google Sheets… plus de 150 connecteurs.
- Alertes — règles déclenchées quand une métrique sort d'un seuil, avec notifications par e-mail, Slack, webhook, etc.
- Variables — pour rendre un dashboard générique : un menu déroulant change le service ou l'environnement affiché.
Grafana = la fenêtre par laquelle tu regardes ce qui se passe dans tes systèmes, en temps réel et avec de jolis graphiques.
Un exemple d'usage
Reprenons l'API FastAPI de la fiche Prometheus,
qui expose predictions_total et
prediction_latency_seconds. Une fois Prometheus branché comme
source de données dans Grafana, tu crées un dashboard avec trois panels :
-
Prédictions par seconde (graphique en courbe) :
rate(predictions_total[1m]) -
Latence p95 (graphique en courbe) :
histogram_quantile(0.95, rate(prediction_latency_seconds_bucket[5m])) -
Total prédictions sur 1h (jauge / stat) :
increase(predictions_total[1h])
Tu obtiens en quelques minutes une vue temps réel de ton service. Tu peux ensuite ajouter une alerte : « si la latence p95 dépasse 500 ms pendant 2 minutes, envoie un message Slack ».
How-to : installer et utiliser Grafana
-
Lancer Grafana avec Docker
Image officielle, un seul conteneur :
bashdocker run -d --name grafana \ -p 3000:3000 \ -v grafana-data:/var/lib/grafana \ grafana/grafanaLe volume
grafana-datapersiste tes dashboards et tes réglages : sans ça, tout disparaît au prochaindocker rm.Ouvre
http://localhost:3000. Login par défaut :admin/admin. Grafana te demande un nouveau mot de passe à la première connexion. -
Lancer Prometheus + Grafana ensemble
En pratique tu lances toujours les deux. Voici un
docker-compose.ymlminimal qui les met sur le même réseau :yaml# docker-compose.yml services: prometheus: image: prom/prometheus ports: ["9090:9090"] volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana ports: ["3000:3000"] volumes: - grafana-data:/var/lib/grafana depends_on: [prometheus] volumes: grafana-data:Lance avec
docker compose up -d. Les deux conteneurs peuvent maintenant se parler par leur nom de service :http://prometheus:9090depuis Grafana. -
Ajouter Prometheus comme source de données
Dans l'UI Grafana, menu Connections → Data sources → Add data source. Choisis Prometheus, puis renseigne l'URL :
- Si Grafana et Prometheus sont dans le même
docker compose:http://prometheus:9090 - Si Prometheus tourne sur l'hôte et Grafana en conteneur :
http://host.docker.internal:9090 - Tout en local sans Docker :
http://localhost:9090
Clique sur Save & test : tu dois voir « Successfully queried ».
- Si Grafana et Prometheus sont dans le même
-
Créer ton premier dashboard
Menu Dashboards → New → New dashboard → Add visualization. Choisis ta source Prometheus, puis tape une requête PromQL dans le champ
Query, par exemple :promqlrate(predictions_total[1m])Le graphique se met à jour en direct. Sur la droite, choisis le type de visualisation (Time series, Stat, Gauge, Bar chart…), donne un titre au panel, puis Apply. Répète pour chaque métrique que tu veux afficher, puis Save dashboard.
Importer un dashboard existantgrafana.com/dashboards contient des milliers de dashboards prêts à l'emploi. Repère un ID (par ex.
1860pour Node Exporter Full) puis Dashboards → New → Import. -
Utiliser des variables
Pour qu'un même dashboard serve plusieurs services ou environnements, ajoute des variables (icône Settings du dashboard → Variables). Exemple : une variable
$servicequi liste tous lesjobde Prometheus, puis dans tes requêtes :promqlrate(http_requests_total{job="$service"}[5m])Un menu déroulant apparaît en haut du dashboard ; changer la valeur recharge tous les panels avec le nouveau filtre.
-
Configurer une alerte
Sur un panel, onglet Alert → Create alert rule. Tu définis une condition (« WHEN
last()OF query A IS ABOVE 0.5 »), une durée (FOR 2m), et un contact point (e-mail, Slack, webhook). Grafana évalue la règle en boucle et déclenche la notif quand la condition tient. -
Versionner ses dashboards
Les dashboards sont du JSON. Tu peux les exporter (Share → Export → Save to file) et les commiter dans ton repo. Mieux : Grafana sait charger des dashboards et data sources depuis des fichiers au démarrage (provisioning) — au lieu de cliquer dans l'UI, tu décris tout dans des YAML montés en volume. C'est l'approche infrastructure as code.
Aide-mémoire
docker run -d -p 3000:3000 -v grafana-data:/var/lib/grafana grafana/grafana
# Réinitialiser le mot de passe admin
docker exec -it grafana grafana-cli admin reset-admin-password nouveauMdp
# conf/provisioning/datasources/prometheus.yml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus:9090
isDefault: true
d s # Save dashboard
d r # Refresh
d k # Kiosk mode (plein écran)
e # Edit panel survolé
v # Voir un panel en grand
? # Liste de tous les raccourcis
Grafana et le reste de l'écosystème
- Prometheus — la source de données la plus utilisée avec Grafana. Voir l'encart en haut de page.
- Docker — Grafana se déploie en un conteneur, et se branche aux autres conteneurs via le réseau Docker.
- Kubernetes — le chart Helm kube-prometheus-stack installe Prometheus + Grafana avec des dashboards K8s pré-configurés (CPU/RAM par pod, etc.).
- SQLAlchemy — Grafana sait aussi parler directement à PostgreSQL ou MySQL. Pratique pour visualiser des données métier (commandes par jour, conversions…) sans passer par Prometheus.
- MLflow — Grafana ne remplace pas l'UI MLflow (qui sert à comparer des entraînements), mais il peut afficher des métriques de production de ton modèle déployé : volume de prédictions, latence, taux d'erreur.
Grafana existe aussi en SaaS (Grafana Cloud, free tier généreux) si tu ne veux pas héberger toi-même. Pour le projet de fin de formation, une instance Docker locale ou dans le cluster Kubernetes suffit largement et fait plus pédagogique.
Pour aller plus loin
- Documentation officielle : grafana.com/docs/grafana
- Bibliothèque de dashboards : grafana.com/dashboards
- Tutoriel Getting Started : Grafana fundamentals
- Repo GitHub : github.com/grafana/grafana