دورة

Observabilité d'une application IA avec OpenTelemetry, Prometheus et Grafana

Instrumenter un assistant Gemini et un agent ADK selon les conventions gen_ai, faire passer métriques, traces et journaux par un collecteur OpenTelemetry vers Prometheus, Tempo et Loki, provisionner Grafana en code avec ses alertes, puis basculer l'export vers Cloud Monitoring et Cloud Trace.

متقدم 6 دروس 6h
ابدأ الدورة
التقدّم 0% · 0/6

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Observabilité d'une application IA avec OpenTelemetry, Prometheus et Grafana

Ondine Télécom (opérateur fictif, 350 conseillers) a mis en service un assistant IA pour son support client : une route qui répond aux questions fréquentes avec Gemini et un cache, et un agent ADK qui diagnostique la ligne d'un client. Un lundi matin, les réponses passent de deux à six secondes et la facture de la semaine a pris 40 %. La supervision en place voit des réponses HTTP 200. Personne ne peut dire si le modèle ralentit, si le cache ne sert plus ou si l'agent boucle.

Ce projet construit l'observabilité qui répond en cinq minutes : chaque appel au modèle mesuré selon les conventions OpenTelemetry gen_ai (durée, tokens, erreurs), le coût et le taux de cache en métriques applicatives, des traces qui montrent chaque étape de l'agent, des journaux reliés à ces traces, un tableau de bord et trois alertes provisionnés en code. Puis le même code exporté vers Google Cloud en changeant un seul fichier.

Tableau de bord Grafana de l'assistant pendant une charge réelle : requêtes, latence p95, erreurs, taux de cache, coût, tokens, agent ADK, journaux

Capture réelle du 2026-10-16, pendant une charge de cinq minutes sur Vertex AI (gemini-3.5-flash-lite). Les losanges du graphe de latence ouvrent la trace de l'appel mesuré.

Ce que vous livrez

LivrableOù le voir
Une pile collecteur OpenTelemetry, Prometheus, Tempo, Loki, Grafana (docker compose -p lab-otel)leçon 1, make up
Un service FastAPI dont chaque appel au modèle produit un span chat et les métriques gen_ai.*leçon 2
Coût estimé, taux de cache, agent ADK avec ses métriques natives et ses tokensleçon 3
Un tableau de bord de 13 panneaux généré par script, avec exemplars, traces et journaux reliésleçon 4, make e2e
Trois alertes provisionnées, déclenchées volontairement par une charge de testleçon 5, make demo-alerte
La configuration du collecteur pour Cloud Monitoring, Cloud Trace et Cloud Logging, validéeleçon 6, make valider-gcp

Architecture

flowchart LR
  subgraph APP["Service assistant-support (FastAPI, port 8088)"]
    Q["/question<br/>cache + Gemini"]
    A["/agent<br/>agent ADK + outil"]
    SDK["SDK OpenTelemetry<br/>traces, métriques gen_ai, journaux"]
  end
  CH["Charge de test<br/>(loi de Zipf)"] --> Q
  CH --> A
  Q --> GEM["Gemini<br/>(clé API ou Vertex AI)"]
  A --> GEM
  Q --> SDK
  A --> SDK
  SDK -->|"OTLP/HTTP"| COL["Collecteur OTel<br/>memory_limiter, filtre, batch"]
  subgraph LAB["docker compose -p lab-otel"]
    COL --> PROM[("Prometheus")]
    COL --> TEMPO[("Tempo")]
    COL --> LOKI[("Loki")]
    GRAF["Grafana<br/>tableau de bord + alertes en code"]
  end
  GRAF --> PROM
  GRAF --> TEMPO
  GRAF --> LOKI
  COL -.->|"leçon 6 : collector-gcp.yaml"| GCP["Cloud Monitoring<br/>Cloud Trace, Cloud Logging"]

Stack et coût

ÉlémentChoixPourquoi
SDKOpenTelemetry Python 1.42.1plafond imposé par ADK 2.10 ; tout le SDK est aligné dessus
Conventionsgen_ai (dépôt semantic-conventions-genai, statut Development)noms communs avec ADK et les outils du marché
Collecteuropentelemetry-collector-contrib 0.161.0un point d'entrée, filtrage des contenus, changement de destination sans code
StockagesPrometheus 3.15, Tempo 2.10, Loki 3.7ouverts, légers (moins de 1 Go de RAM pour la pile entière, Grafana compris)
Grafana13.1, provisionné en fichierstableau de bord et alertes relus en revue de code
Modèlegemini-3.5-flash-lite0,30 USD / 2,50 USD par million de tokens entrée / sortie
AgentGoogle ADK 2.10spans et métriques natifs, complétés par un callback

Coût mesuré : make e2e (100 requêtes, 29 appels au modèle) a coûté 0,0039 USD le 2026-10-16 sur Vertex AI. make test et make demo-alerte utilisent un faux modèle et ne coûtent rien. La pile tourne en local ; aucune ressource Google Cloud n'est créée.

Prérequis

  • Docker 24+ avec Compose v2, 2 Go de RAM libres, ports 3100, 3200, 3300, 4317, 4318, 8088 et 9095 disponibles.
  • Python 3.10+, make, openssl.
  • Pour les appels réels : une clé API Gemini, ou un projet Google Cloud avec Vertex AI (gcloud auth application-default login). Sans l'un ni l'autre, FAUX_MODELE=1 fait tout fonctionner sauf l'agent.
  • Avoir déjà écrit une API FastAPI et un agent ADK simple ; connaître les bases de PromQL aide pour le module 3.

Programme

ModuleLeçonÀ la fin, cette commande marche
1. DéployerCollecteur, Prometheus, Tempo, Loki et Grafana en Docker Composemake up → 5 conteneurs, Grafana prêt
2. InstrumenterTracer et mesurer chaque appel au modèle selon les conventions gen_aimake test → 10 tests verts
Coût, taux de cache et agent ADK : ce que la convention ne mesure pasmake run → réponse, cache, agent
3. Visualiser et alerterUn tableau de bord Grafana provisionné en code, relié aux traces et aux journauxmake e2e → les trois signaux vérifiés
Alertes provisionnées et charge de test réellemake demo-alerte → alerte « Firing »
4. ExploiterL'export équivalent vers Cloud Monitoring et Cloud Trace, puis le nettoyagemake valider-gcp, make down vérifié

Le code complet est dans files/ : commencez par le README.

الموارد

تنزيل الكل (.zip)

المراجع