Aller au contenu
medium

Formation Observabilité Kubernetes

16 min de lecture

Vous voulez surveiller vos applications Kubernetes mais vous ne savez pas par où commencer ? Cette formation vous guide pas à pas pour construire une plateforme d'observabilité complète, de l'installation de Minikube jusqu'à une stack production-ready avec métriques, logs, traces et alertes.

En 9 modules pratiques, vous déployez une application microservices, puis vous ajoutez brique par brique : Prometheus pour les métriques, Grafana pour la visualisation, Alertmanager pour les notifications, Loki pour les logs centralisés, et Tempo pour les traces distribuées.

Cette formation est conçue pour les développeurs, ops et SRE qui veulent :

  • Comprendre les fondamentaux de l'observabilité (métriques, logs, traces)
  • Savoir déployer et configurer les outils standards de l'industrie
  • Créer des dashboards et des alertes pertinentes
  • Diagnostiquer des problèmes en production grâce à la corrélation des signaux
PrérequisNiveau requisNotes
Linux / TerminalBasiqueSavoir naviguer, éditer des fichiers, lire des logs
DockerBasiqueComprendre ce qu'est un conteneur
KubernetesNotionsSavoir ce qu'est un pod, un service, un namespace
YAMLBasiqueSavoir lire et modifier des fichiers YAML

L'application de démonstration déploie à elle seule 23 microservices, auxquels s'ajoutent Prometheus, Grafana, Loki et Tempo. En dessous de 8 Go de RAM, Minikube commence à évincer des pods et les modules suivants deviennent difficiles à valider.

RessourceMinimumRecommandé
RAM8 Go16 Go
CPU4 cœurs6+ cœurs
Disque20 Go libres40 Go libres
OSLinux, macOS, Windows (WSL2)Linux

À la fin de cette formation, vous saurez :

  1. Déployer une application microservices instrumentée avec OpenTelemetry
  2. Installer et configurer Prometheus pour collecter les métriques
  3. Écrire des requêtes PromQL pour extraire des insights
  4. Créer des dashboards Grafana avec variables et provisioning as code
  5. Configurer Alertmanager pour envoyer des notifications (Slack, email, webhook)
  6. Centraliser les logs avec Loki et interroger avec LogQL
  7. Collecter les traces distribuées avec OpenTelemetry et Tempo
  8. Corréler les signaux pour un diagnostic efficace
  9. Appliquer les bonnes pratiques production (HA, rétention, RBAC)

Chaque module ajoute une brique au schéma ci-dessous, jamais plus d'une à la fois. Le principe reste constant : les applications émettent des signaux, un collecteur les route, une base spécialisée les stocke, et Grafana sert de point d'entrée unique pour les interroger. Repérez dès maintenant où se situe la brique que vous installez, cela évite de confondre un problème de collecte avec un problème de stockage.

Architecture de la stack d'observabilité Kubernetes

Lisez ce tableau ligne par ligne : chaque signal suit le même trajet, mais avec des outils et surtout un langage de requête différents. C'est la principale source de confusion au début, PromQL, LogQL et TraceQL se ressemblent sans être interchangeables.

SignalCollecteStockageRequêtageVisualisation
MétriquesOTel CollectorPrometheus TSDBPromQLGrafana
LogsPromtailLokiLogQLGrafana
TracesOTel CollectorTempoTraceQLGrafana
AlertesPrometheus RulesAlertmanagerPromQL (règles)Grafana

La formation est organisée en 9 modules progressifs. Chaque module s'appuie sur les précédents : il installe des composants que les suivants interrogent, et se termine par une validation à réussir avant d'aller plus loin. Comptez une demi-journée pour arriver à Grafana, la journée complète pour l'ensemble.

Les étoiles de la colonne Difficulté ne mesurent pas la complexité des commandes, mais celle des concepts à assimiler. Les modules 06 à 08 supposent acquis PromQL et les dashboards.

ModuleDuréeDifficultéCe que vous construisez
00, Setup20 minMinikube + Helm + kubectl
01, Application démo30 minOpenTelemetry Demo (23 pods) + Collector
02, Prometheus90 min⭐⭐Prometheus + PromQL
03, Grafana60 min⭐⭐Dashboards + Variables + Provisioning
04, Alerting45 min⭐⭐Alertmanager + Règles + Routing
05, Loki60 min⭐⭐Loki + Promtail + LogQL
06, Tempo45 min⭐⭐⭐Tempo + Traces distribuées
07, Corrélation30 min⭐⭐⭐Exemplars + Liens Logs↔Traces
08, Production60 min⭐⭐⭐HA + Rétention + RBAC + GitOps

Durée totale : ~7h30 (pauses incluses)

Les six modules ci-dessous sont publiés et testés de bout en bout. Ils forment déjà une plateforme exploitable, avec métriques, dashboards, alertes et logs centralisés.

Les modules suivants sont en cours de finalisation :

ModuleContenu prévuStatut
06, TempoTraces distribuées, spans, instrumentation🚧 En cours
07, CorrélationExemplars, liens logs↔traces, Explore🚧 En cours
08, ProductionHA, rétention longue durée, RBAC multi-tenant, GitOps🚧 En cours

Vous travaillerez avec OpenTelemetry Demo, l'application de référence de la CNCF pour l'observabilité. C'est une application e-commerce complète avec 23 microservices.

Un « hello world » instrumenté ne produirait qu'une trace à un seul saut et des métriques sans variation, donc rien d'intéressant à observer. OpenTelemetry Demo génère au contraire du trafic continu, des appels entre services écrits dans des langages différents, et des pannes déclenchables à la demande.

CritèreAvantage
Multi-langageGo, Java, .NET, Python, Node.js, Rust, représentatif du monde réel
Instrumentation nativeMétriques et traces OpenTelemetry intégrées
Générateur de chargeTrafic réaliste automatique avec Locust
Scénarios d'erreurFeature flags pour simuler des pannes
Open sourceMaintenu par la CNCF, bien documenté

Inutile de mémoriser ce schéma, mais gardez-le sous la main : quand une trace vous montrera un appel lent, c'est ici que vous identifierez quel service parle à quel autre. Les flèches représentent des appels applicatifs, pas des flux de télémétrie.

Architecture de l'application OpenTelemetry Demo

Les fichiers de values Helm utilisés dans la formation sont regroupés dans un dépôt public. Clonez-le avant de commencer : les modules y font référence par leur chemin, et recopier à la main des centaines de lignes de YAML depuis une page web est la meilleure façon d'introduire une erreur d'indentation.

Fenêtre de terminal
git clone https://github.com/stephrobert/lab-observability.git
cd lab-observability

Un dossier par module, nommé exactement comme lui, ce qui permet de retrouver un fichier de values sans chercher. Les trois derniers dossiers sont marqués « à venir » : ils ne seront alimentés qu'à la publication des modules correspondants.

lab-observability/
├── 00-setup/ # Scripts de vérification
├── 01-demo-app/
│ ├── values.yaml # Helm values pour OTel Demo
│ └── otel-collector-values.yaml # Config du Collector
├── 02-prometheus/
│ └── helm-values/
│ └── prometheus-minimal.yaml
├── 03-grafana/
│ └── helm-values/
│ └── grafana.yaml
├── 04-alerting/
│ ├── helm-values/
│ │ └── alertmanager.yaml
│ └── rules/ # Règles d'alerte
├── 05-loki/
│ └── helm-values/
│ └── loki-stack.yaml
├── 06-tempo/ # (à venir)
├── 07-correlation/ # (à venir)
├── 08-production/ # (à venir)
└── README.md

Les interfaces sont exposées en NodePort, c'est-à-dire sur un port fixe de l'adresse IP de Minikube, et non en port-forward : l'accès survit ainsi à la fermeture du terminal. Aucune de ces interfaces n'est protégée en dehors du mot de passe Grafana ; ce lab reste strictement local et ne doit pas être exposé sur un réseau partagé.

ServiceURLCredentials
OTel Demohttp://<MINIKUBE_IP>:30080Aucun
Prometheushttp://<MINIKUBE_IP>:30090Aucun
Grafanahttp://<MINIKUBE_IP>:30030admin / admin
Alertmanagerhttp://<MINIKUBE_IP>:30093Aucun

Pour obtenir l'IP de Minikube :

Fenêtre de terminal
minikube ip

Le détail ci-dessous sert à deux choses : vérifier que vous avez bien acquis ce qu'un module promettait, et choisir un point d'entrée si vous maîtrisez déjà une partie de la stack. Chaque liste correspond à ce que vous devez savoir refaire sans le guide sous les yeux.

Le module d'installation, à ne pas sauter même avec un cluster existant : le dimensionnement de Minikube conditionne la réussite des modules suivants.

  • Installer Minikube avec les bonnes ressources
  • Configurer kubectl et Helm
  • Ajouter les repos Helm nécessaires

C'est le module qui fournit la matière à observer : sans lui, les suivants n'auraient que les métriques du cluster à afficher.

  • Déployer une application microservices avec Helm
  • Comprendre le protocole OTLP (OpenTelemetry Protocol)
  • Configurer un OpenTelemetry Collector

Le module le plus long, et le plus rentable : PromQL sert ensuite dans les dashboards Grafana comme dans les règles d'alerte.

  • Expliquer le modèle pull de Prometheus
  • Configurer le scraping automatique
  • Écrire des requêtes PromQL (rate, sum, histogram_quantile)
  • Créer des recording rules

L'accent est mis sur le provisioning as code : un dashboard construit à la souris disparaît avec le pod qui l'hébergeait.

  • Créer des dashboards avec différents types de panels
  • Utiliser les variables pour des dashboards dynamiques
  • Provisionner dashboards et datasources as code
  • Importer des dashboards communautaires

La difficulté n'est pas de déclencher une alerte, mais d'en déclencher peu : le routage, les silences et les inhibitions décident de ce qui réveille réellement quelqu'un.

  • Écrire des règles d'alerte efficaces
  • Configurer le routing dans Alertmanager
  • Gérer les silences et les inhibitions
  • Intégrer Slack, email ou webhook

Loki n'indexe que les labels, pas le contenu des lignes : c'est ce choix qui rend le stockage économique et qui explique la syntaxe particulière de LogQL.

  • Déployer Loki en mode single binary
  • Configurer Promtail pour collecter les logs Kubernetes
  • Écrire des requêtes LogQL
  • Parser les logs JSON et extraire des labels

L'écueil le plus fréquent sur ce type de formation est de lire vite et de ne rien retenir. Les cinq réflexes ci-dessous coûtent quelques minutes par module et évitent de repartir de zéro au troisième. Le premier est le plus important : une erreur non corrigée se propage en cascade dans les modules suivants, où elle se manifestera sous une forme méconnaissable.

  1. Suivez l'ordre des modules

    Chaque module installe des composants utilisés par les suivants. Sauter un module causera des erreurs.

  2. Exécutez chaque commande

    Ne vous contentez pas de lire. Tapez chaque commande et observez le résultat.

  3. Validez avant de passer au module suivant

    Chaque module se termine par une section "Validation". Assurez-vous que tout fonctionne avant de continuer.

  4. En cas de problème, consultez le dépannage

    Chaque module contient une section "Dépannage" avec les erreurs courantes.

  5. Prenez des notes

    Notez les commandes utiles et les concepts que vous voulez approfondir.

Les quatre références à garder ouvertes pendant la formation, en particulier pour les fonctions PromQL et LogQL qui ne sont pas toutes couvertes ici.

Ces pages traitent les mêmes outils hors du contexte du lab : théorie de l'observabilité d'un côté, guides de référence par outil de l'autre.

  • L'observabilité repose sur plusieurs signaux : métriques, logs, traces (et profiles, baggage)
  • Prometheus collecte les métriques en mode pull et stocke dans une TSDB
  • PromQL est le langage de requête pour extraire des insights des métriques
  • Grafana centralise la visualisation de tous les signaux
  • Alertmanager gère le routing et la déduplication des alertes
  • Loki stocke les logs de façon économique en indexant uniquement les labels
  • OpenTelemetry est le standard pour l'instrumentation des applications
  • La corrélation entre signaux est la clé du diagnostic efficace

Le module 00 vérifie votre poste et installe Minikube, Helm et kubectl en une vingtaine de minutes. Il se termine par un contrôle de bon fonctionnement : ne passez à la suite que s'il est vert, tous les modules suivants supposent ce socle en place.

Chaque dossier (00-setup/, 01-demo-app/, etc.) correspond à un module.

Ces durées correspondent à une première exécution, commandes tapées et sorties observées, sans compter le temps de téléchargement des images. Un lecteur qui connaît déjà Kubernetes ira plus vite sur les modules 00 et 01, mais rarement sur PromQL. Prévoyez de découper la formation en deux ou trois sessions plutôt que de l'enchaîner d'un trait.

ModuleDurée
00, Setup20 min
01, Application démo30 min
02, Prometheus90 min
03, Grafana60 min
04, Alerting45 min
05, Loki60 min
06, Tempo45 min
07, Corrélation30 min
08, Production60 min
Total~7h30

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn