Lab 6 — Métriques métier
Le Lab 3 collectait des métriques d’infrastructure (système, PostgreSQL) ; le connector spanmetrics fournit déjà débit et latence par service. Il manque les métriques métier : combien d’avis créés ? En combien de temps ? Dans ce lab, vous instrumentez review-service avec Micrometer (un compteur + un histogramme), exportés vers Prometheus via l’agent OpenTelemetry, puis vous dérivez une métrique depuis les spans avec le connector count.
Prérequis
- Labs 1 à 3 terminés, agent Java actif sur
review-service(cf. Lab 5, étape 2). - D’abord 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. - Ensuite seulement le port-forward Prometheus, qui s’appuie sur ces variables :
kubectl port-forward -n otel-demo --address $PF_ADDR svc/prometheus $PROM_PORT:9090 &
Étapes
Partie 1 — Compteur et histogramme dans le code
- Lire l’instrumentation Micrometer dans
apps/review-service/src/main/java/fr/k8sschool/reviews/ReviewController.java:
Pourquoi Micrometer plutôt que le SDK OpenTelemetry directement ?
- Déployer et générer du trafic :
- Retrouver les métriques dans Prometheus (http://localhost:9090) :
reviews_created_total— votre compteur ;reviews_creation_time_*— votre histogramme (_bucket,_sum,_count).
Tracez la latence p95 de création d’un avis :
Partie 2 — Dériver une métrique depuis les spans (connector count)
- Ajouter le connector
count: comme au Lab 3, un fichier de values,manifests/60-otel-metrics-values.yaml. Il doit compter les spans en erreur et exposer le résultat en métriqueapp.spans.errors.
- Provoquer des erreurs et vérifier : créez un avis pour un produit inexistant (le service échoue en 500) :
Dans Prometheus, cherchez app_spans_errors_total : votre première métrique dérivée des traces, sans une ligne de code.
Livrable
Dans Grafana ou Prometheus : le graphe de latence p95 (reviews_creation_time) + le compteur métier reviews_created_total + la métrique dérivée app_spans_errors_total.