Projet · Phase 8.3

Supervision (3/5) — Grafana & les tableaux de bord

Les chiffres bruts de Prometheus sont austères. Grafana les transforme en tableaux de bord clairs. On le branche comme datasource, on lit un dashboard, et on comprend la séparation entre qui stocke et qui affiche.

⏱ ~1 h 30Niveau avancéPrérequis : Supervision (2/5)Pratique · TP
L’idée reçue

« Grafana stocke et surveille mes métriques. »

Non : Grafana ne stocke rien. Il ne fait qu’afficher des données qu’il va chercher ailleurs — dans Prometheus, dans Loki… Cette séparation est fondamentale : d’un côté ceux qui collectent et stockent (Prometheus, Loki), de l’autre celui qui visualise (Grafana). Comprendre ça évite bien des confusions.

À la fin de ce module, tu sauras…

  • Déployer Grafana et comprendre son rôle (visualisation seule)
  • Connecter Prometheus comme datasource
  • Lire et construire un panneau à partir d’une requête PromQL
  • Importer un tableau de bord prêt à l’emploi

01Déployer Grafana

Expérience 1

Installer, et récupérer l’accès

Manipule
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana -n observabilite

Récupère le mot de passe admin généré, puis ouvre l’interface :

Manipule
kubectl -n observabilite get secret grafana -o jsonpath="{.data.admin-password}" | base64 -d; echo
kubectl -n observabilite port-forward svc/grafana 3000:80
Sur http://localhost:3000 (login admin + le mot de passe récupéré), tu accèdes à Grafana. Vide pour l’instant : il ne sait pas encore chercher les données.
Comprends Grafana ne stocke rien

Grafana est une couche de visualisation pure. Il n’a pas de base de métriques : à chaque affichage, il interroge en direct une source (Prometheus, Loki, une base SQL…) et dessine le résultat. C’est pourquoi on doit d’abord lui déclarer ses datasources. Cette séparation stockage/affichage est un principe d’architecture : tu peux changer d’outil de visualisation sans toucher à tes données, et inversement.

02Connecter Prometheus (datasource)

Expérience 2

Dire à Grafana où sont les métriques

Dans Grafana → Connections → Data sources → Add data source → Prometheus. Renseigne l’URL interne du service Prometheus (résolue par le DNS du cluster, vu en Phase 5) :

Manipule
http://prometheus-server.observabilite.svc.cluster.local

Clique Save & test.

Observe
Successfully queried the Prometheus API.
Grafana sait maintenant interroger Prometheus. Remarque l’adresse : c’est le DNS interne du Service (nom.namespace.svc.cluster.local) — exactement le mécanisme du module 5.6.
Comprends le lien entre les briques du projet

Grafana joint Prometheus par son Service Kubernetes, via le DNS interne du cluster. Aucune IP en dur : si le Pod Prometheus est recréé ailleurs, le Service continue de pointer au bon endroit (Phase 5.5-5.6). Tes acquis Kubernetes rendent cette intégration naturelle — la supervision n’est pas un monde à part, elle s’appuie sur tout ce que tu as construit.

03Ton premier panneau

Expérience 3

De la requête PromQL au graphe

Crée un dashboard (Dashboards → New → Add visualization, choisis la datasource Prometheus), et entre une requête du module précédent :

Manipule
sum(rate(container_cpu_usage_seconds_total{namespace="lab-soria"}[5m]))
Observe
Un graphe se dessine : la consommation CPU de ton application SORIA Web, en direct. Tu peux choisir le type (courbe, jauge, statistique), le titre, l’unité. C’est un panneau (panel).
Comprends panel & dashboard

Un panel = une requête + une façon de l’afficher. Un dashboard = un ensemble de panels regroupés pour raconter une histoire (santé d’un service, vue d’un cluster…). La donnée vient toujours de la datasource ; Grafana ne fait que la mettre en forme. Le vrai savoir-faire reste la requête PromQL (module 8.2) : Grafana l’habille, mais c’est elle qui porte le sens.

04Importer un dashboard prêt

Expérience 4

Ne pas réinventer la roue

La communauté publie des milliers de dashboards. Pour Kubernetes, importe-en un par son ID depuis Dashboards → New → Import (par exemple un dashboard « Kubernetes cluster monitoring ») :

Manipule
1. Dashboards -> New -> Import
2. Colle un ID de dashboard de la bibliotheque Grafana
3. Choisis la datasource Prometheus
4. Import
Observe
Un tableau de bord complet apparaît instantanément : nodes, Pods, CPU, mémoire, réseau — le tout branché sur tes données Prometheus. Des dizaines de panels, sans les écrire un par un.
Comprends un dashboard est du JSON portable

Un dashboard Grafana est décrit en JSON : c’est pourquoi on peut l’exporter, le partager, l’importer par ID, et même le versionner dans Git (« dashboard as code »). Il ne contient pas de données, seulement des requêtes et des mises en forme — il fonctionne chez toi dès qu’il pointe vers ta datasource. Réutiliser un dashboard éprouvé est un réflexe sain ; tu l’adaptes ensuite à tes besoins.

Ce que tu retiens

Grafana visualise, mais ne stocke rien : il interroge en direct des datasources (ici Prometheus, via le DNS interne du cluster). Un panel = une requête PromQL + un affichage ; un dashboard = un ensemble de panels. Les dashboards sont du JSON portable (importables, versionnables). La séparation stockage / visualisation te laisse changer une brique sans casser l’autre.

Mini-projet

Un tableau de bord pour SORIA Web

À faire

  1. Déploie Grafana et connecte Prometheus en datasource (Save & test réussi).
  2. Crée un panel affichant le CPU de ton namespace lab-soria.
  3. Ajoute 2 panels : mémoire des Pods, et nombre de Pods Running.
  4. Importe un dashboard Kubernetes de la communauté et branche-le sur ta datasource.
  5. Regroupe tes panels dans un dashboard « SORIA Web » et sauvegarde-le.
  6. Documente dans BookStack : rôle de Grafana (visualisation), datasource, panel vs dashboard.
Fil rouge — Tu vois les tendances (métriques). Mais quand un graphe montre un pic d’erreurs, il te manque le détail : que disait l’application, exactement ? Au module suivant, on ajoute le pilier des logs avec Loki.

?Auto-évaluation

1. Grafana stocke-t-il les métriques ?

Non. Il ne fait que les afficher en interrogeant en direct une datasource (Prometheus, Loki…). Le stockage est ailleurs.

2. Comment Grafana joint-il Prometheus dans le cluster ?

Par l’URL du Service Prometheus via le DNS interne (nom.namespace.svc.cluster.local), sans IP en dur — le mécanisme de la Phase 5.

3. Qu’est-ce qui porte réellement le sens dans un panel ?

La requête PromQL. Grafana ne fait que l’habiller ; c’est la requête qui définit l’information affichée.

Connecte-toi pour enregistrer ta progression.

Suite → Supervision (4/5) — Loki & les logs