Ce que vous allez apprendre dans ce TP
- Brancher un logger existant sur OpenTelemetry
- Corréler logs et traces
- Collecter des fichiers avec filelog
Introduction #
Ce que vous allez apprendre dans cette section
- Brancher un logger existant sur OpenTelemetry
- Corréler logs et traces
- Collecter des fichiers avec filelog
Contexte. Les logs de facturation sont des fichiers texte que personne ne relie aux traces. Vous branchez le service moderne sur OpenTelemetry et récupérez les logs de l'application historique sans la modifier.
Prérequis : Docker et Python 3.10 ou plus ; la pile grafana/otel-lgtm (Collector, Tempo, Loki, Prometheus, Pyroscope et Grafana dans un seul conteneur) · Durée estimée : 45 min
Mise en place #
Étapes guidées, avec leur correction.
1. Démarrer la pile d'observabilité
Pourquoi ? Une seule image fournit un Collector OTLP et tous les backends : on se concentre sur le signal.
Lancezgrafana/otel-lgtm, créez un environnement Python et pointez les exportateurs vers le port OTLP/HTTP 4318.2. Brancher le module logging
Pourquoi ? Le LoggingHandler transforme chaque appel logging en LogRecord OpenTelemetry, avec le contexte de trace actif.
Écrivezfacturation.py: un LoggerProvider avec exportateur OTLP, un handler ajouté au logger racine, un TracerProvider, et des logs INFO et ERROR émis à l'intérieur de spans.3. Interroger et corréler dans Grafana
Pourquoi ? Le trace_id porté par chaque log permet de passer du log à la trace et inversement.
Dans Explore > Loki, affichez les erreurs du service, dépliez une ligne et repéreztrace_id,span_id, la sévérité et vos attributs. Ouvrez la trace liée, puis depuis un span Tempo affichez ses logs.4. Collecter les logs d'une application historique
Pourquoi ? Sans toucher au code, le receiver filelog lit les fichiers, parse le JSON, la sévérité et le contexte de trace.
Générez un fichier de logs JSON, puis lancez un Collector contrib sur le même réseau que la pile, avecfilelog,json_parser,trace_parseret un processeurresourcequi fixeservice.name.5. Réduire et masquer
Pourquoi ? Le Collector supprime le bruit et les données personnelles avant le stockage.
Ajoutez un processeurfilterqui supprime les logs INFO et untransformqui masque les adresses e-mail dans le corps, puis vérifiez dans Loki.
Niveau de difficulté : ●●●○○ (3/5)
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Articles recommandés
Installer Grafana Loki (Docker Compose, binaire et Helm)
Installer et valider Grafana Loki : configuration minimale, Docker Compose avec Grafana et Alloy,...
Collecter des logs vers Loki : Alloy, Promtail, Docker et OpenTelemetry
Envoyer des logs vers Loki : Grafana Alloy, Promtail, driver Docker, OTLP, bons labels, parsing e...
LogQL (1/2) : requêter les logs (sélecteurs, filtres et parsers)
Apprendre LogQL : sélecteurs de flux, filtres de ligne, parsers json/logfmt/pattern/regexp, filtr...
LogQL (2/2) : transformer les logs en métriques
Créer des métriques à partir des logs avec LogQL : rate, count_over_time, bytes_rate, agrégations...
Loki : stockage, index TSDB, rétention et stockage objet
Configurer le stockage de Loki : chunks, index TSDB, schéma v13, S3/MinIO/GCS, compactor, rétenti...
Alerter sur les logs avec le Ruler de Loki
Mettre en place des alertes et des recording rules LogQL avec le Ruler Loki : configuration, fich...
Exploiter Loki en production : multi-tenant, limites, cardinalité et supervision
Exploiter Loki : multi-tenancy, limites par tenant, protection contre la cardinalité, diagnostics...
Thanos : étendre Prometheus (haute disponibilité, vue globale et rétention longue)
Comprendre pourquoi et comment utiliser Thanos : limites de Prometheus, composants (Sidecar, Quer...
Thanos Sidecar : accoler Thanos à Prometheus et téléverser vers le stockage objet
Mettre en place Thanos Sidecar : réglages Prometheus (external labels, blocs de 2 h), configurati...