Lab 5 — Logs structurées et corrélées
review-service écrit ses logs avec SLF4J/Logback, comme la plupart des applications Java. Dans ce lab, vous suivez le trajet complet d’un log : Logback → appender OpenTelemetry (injecté par l’agent) → OTLP → collecteur → OpenSearch — et surtout, vous exploitez la corrélation log ↔ trace.
Prérequis
- Labs 1 à 3 terminés.
- Le port-forward des UIs actif (
./scripts/open-ui.sh). - Les variables de la formation chargées dans votre shell :
. ./scripts/env.sh. Elles donnent le port du review-service ($APP_PORT, accès direct au service, pas via le frontend-proxy) ainsi que$PF_ADDRet$PF_HOST, l’adresse sur laquelle vosport-forwardécoutent.
Étapes
- Les logs « à l’ancienne » :
kubectl logslit la sortie console du conteneur : du texte brut, sans contexte, service par service. Impossible de croiser avec une trace.
- Revenir à la version « agent Java » (il capture aussi les logs) :
Le Lab 2 s’est terminé avec le build starter déployé. Agent et starter ne doivent jamais cohabiter (chacun enregistre son propre SDK → l’application ne démarre pas). On redéploie donc l’image par défaut, puis on active l’agent :
- Générer des logs corrélés :
- Retrouver ces logs dans Grafana :
Explore → datasource OpenSearch → requête Lucene :
Dépliez le log Creating review for product.... Quels champs OTel voyez-vous autour du message ?
- Du log à la trace en un clic :
Toujours dans le log déplié, suivez le lien du champ traceId (bouton View in Jaeger configuré dans la datasource). Vous atterrissez sur la trace exacte qui a produit ce log : POST /api/reviews avec ses spans HTTP, catalogue et SQL.
- Comprendre le trajet côté collecteur :
- Bonus — receiver
filelog: le collecteur sait aussi lire des fichiers de logs (applis legacy, pods non instrumentés). Sur le modèle du Lab 3, ajoutez à la config du collecteur un receiverfilelogpointé sur/var/log/pods/*/*/*.loget branchez-le au pipelinelogs(le chart monte déjà les volumes en mode DaemonSet via le presetlogsCollection). À discuter avec le formateur selon le temps restant.
Livrable
Une capture « log → trace » : le log Creating review... déplié dans Grafana avec son traceId, et la trace Jaeger correspondante ouverte.