Beaucoup d’équipes qui déploient des modèles de langage en production commettent la même erreur : elles appliquent les mêmes outils de monitoring qu’à leurs microservices classiques, et s’étonnent ensuite de ne rien voir venir quand les performances se dégradent. Une latence qui s’envole sur un endpoint REST, ça se détecte en quelques secondes. Un LLM qui commence à halluciner, à dépasser silencieusement ses fenêtres de contexte, ou à produire des réponses tronquées pour 8 % des requêtes ? Sans une observabilité adaptée, vous l’apprenez souvent par vos utilisateurs finaux, pas par vos dashboards.
L’observabilité des systèmes LLM est un domaine en pleine structuration, et OpenTelemetry s’impose progressivement comme le standard ouvert pour l’outiller sérieusement. Traces distribuées, métriques métier, alertes contextualisées : voici comment construire une infrastructure d’observation robuste autour de vos pipelines d’intelligence artificielle générative.
Pourquoi l’observabilité classique ne suffit pas pour les LLM
Les systèmes LLM introduisent des dimensions de complexité absentes des applications web traditionnelles. La latence d’inférence est non déterministe et fortement variable selon la longueur du prompt, le nombre de tokens générés, ou la charge du GPU. Le comportement fonctionnel — la qualité de la réponse — ne peut pas être capturé par un simple code HTTP 200. Et les chaînes de traitement (RAG, agents, appels en cascade) créent des dépendances imbriquées difficiles à tracer sans instrumentation explicite.
Prenons un exemple concret : une entreprise française de services RH a déployé un assistant de rédaction de fiches de poste basé sur un LLM hébergé on-premise. Pendant plusieurs semaines, les métriques Prometheus classiques affichaient des taux d’erreur proches de zéro et des temps de réponse dans les normes. En réalité, une fraction des requêtes longues dépassait la fenêtre de contexte du modèle, entraînant des réponses tronquées sans aucun signal d’erreur côté API. Ce n’est qu’après avoir instrumenté les métriques de tokens consommés et les spans de génération qu’ils ont identifié et corrigé le problème en moins de 48 heures.
L’observabilité LLM doit couvrir trois couches distinctes : les traces distribuées pour comprendre le chemin d’une requête à travers votre pipeline, les métriques métier pour piloter la qualité et les coûts, et les alertes contextualisées pour agir avant que l’utilisateur ne soit impacté.
OpenTelemetry comme socle d’instrumentation des pipelines IA
OpenTelemetry (OTel) est devenu le standard de facto pour l’instrumentation des systèmes distribués. Sa force : un protocole unique (OTLP), des SDK disponibles en Python, JavaScript, Java et Go, et une compatibilité avec l’ensemble des backends d’observabilité du marché (Jaeger, Tempo, Prometheus, Datadog, Grafana Cloud). Pour les systèmes LLM, la communauté OpenTelemetry a formalisé des conventions sémantiques spécifiques — le groupe de travail GenAI — qui définissent les attributs standardisés à capturer sur chaque appel de modèle.
Instrumenter les traces d’un pipeline LLM avec les spans GenAI
Concrètement, chaque appel à un modèle de langage doit être encapsulé dans un span OTel avec les attributs suivants : gen_ai.system (le fournisseur : openai, anthropic, mistral…), gen_ai.request.model, gen_ai.usage.input_tokens, gen_ai.usage.output_tokens, et gen_ai.response.finish_reason. Ce dernier attribut est particulièrement précieux : une valeur length au lieu de stop indique que le modèle a été interrompu par la limite de tokens, ce qui est exactement le cas non détecté dans l’exemple RH cité plus haut.
Pour les pipelines RAG (Retrieval-Augmented Generation), il faut instrumenter chaque étape séparément : le span de récupération vectorielle, le span de reranking éventuel, et le span de génération finale. Cela permet d’identifier précisément où la latence se concentre. Dans la majorité des cas observés en production, 60 à 70 % de la latence totale provient de la récupération, pas de l’inférence — une information impossible à obtenir sans traces distribuées granulaires. Comment optimiser les coûts d'inférence LLM en production : 6 stratégies concrètes
Les librairies comme OpenLLMetry (Traceloop) ou opentelemetry-instrumentation-openai proposent une instrumentation automatique pour Python, ce qui réduit considérablement le coût d’intégration. En quelques lignes de configuration, vous obtenez des traces structurées sans modifier votre logique métier. Pour les équipes qui utilisent déjà des outils comme les environnements de développement assistés par IA, l’adoption d’une telle instrumentation s’intègre naturellement dans le workflow de développement.
Les métriques clés à surveiller sur un système LLM en production
Métriques de performance et de coût
Au-delà des métriques système classiques (CPU, mémoire, latence réseau), les LLM exigent un suivi spécifique. Voici les indicateurs à instrumenter en priorité :
- Time to First Token (TTFT) : le délai avant que le premier token soit généré. C’est l’indicateur de latence perçue le plus important pour les interfaces en streaming. Un TTFT supérieur à 2 secondes est généralement rédhibitoire pour l’UX.
- Tokens par seconde (throughput de génération) : permet de détecter une dégradation des performances d’inférence, souvent liée à une saturation GPU ou à un changement de configuration.
- Coût par requête en tokens : essentiel pour le pilotage économique, surtout sur des API facturées à la consommation. Une dérive de 20 % sur cette métrique peut signifier un changement de comportement des utilisateurs ou un prompt system qui s’est allongé involontairement.
- Taux de troncature (finish_reason = length) : signal d’alerte sur des prompts trop longs ou une fenêtre de contexte mal dimensionnée.
- Taux de refus (finish_reason = content_filter) : utile pour calibrer les garde-fous et détecter des tentatives d’injection de prompt.
Métriques de qualité et de dérive sémantique
La qualité fonctionnelle des réponses est plus difficile à mesurer automatiquement, mais des approches pragmatiques existent. Le LLM-as-a-judge consiste à utiliser un modèle secondaire (souvent plus léger) pour évaluer automatiquement la pertinence et la cohérence des réponses du modèle principal. Cette métrique, exportable via OTel comme jauge personnalisée, permet de détecter une dérive sémantique sans attendre les retours utilisateurs. Des frameworks comme RAGAS ou DeepEval proposent des évaluateurs prêts à l’emploi, compatibles avec les pipelines Python standards. La sécurité de ces pipelines d’évaluation mérite également une attention particulière, notamment pour éviter les injections — un sujet traité en profondeur dans notre checklist de sécurité IA pour les LLM en production.
Configurer des alertes pertinentes sans noyer les équipes
L’un des pièges les plus fréquents en observabilité LLM est la sur-alertisation : trop d’alertes tuent l’alerte. La variabilité naturelle des systèmes de génération de texte rend les seuils statiques peu fiables. Quelques principes pour construire une stratégie d’alerting efficace :
Alerter sur les tendances, pas les pics ponctuels. Utilisez des fenêtres glissantes (5 à 15 minutes) plutôt que des seuils instantanés. Une latence p95 qui dépasse 8 secondes sur 10 minutes consécutives est un signal bien plus fiable qu’un pic isolé à 12 secondes.
Prioriser les alertes métier. Une alerte sur le taux de troncature (> 5 % des requêtes) ou sur le taux de refus (> 2 % en dehors des heures habituelles) a une valeur opérationnelle immédiate. Une alerte sur l’utilisation CPU du serveur d’inférence est utile, mais secondaire si elle n’est pas corrélée à une dégradation utilisateur.
Implémenter le burn rate sur les SLO. Définissez un SLO de latence (ex : 95 % des requêtes sous 5 secondes) et alertez sur le taux de consommation de votre budget d’erreur. Cette approche, popularisée par le SRE book de Google, évite les faux positifs tout en garantissant une réactivité suffisante. Grafana et Prometheus proposent des règles d’alerting natives pour ce pattern.
L’architecture d’observabilité elle-même doit être robuste. Déployer un collecteur OTel en tant que processus séparé (le OTel Collector) plutôt qu’en mode in-process permet de découpler l’instrumentation de votre application et d’éviter que la défaillance du backend d’observabilité n’impacte votre service principal. Cette approche s’inscrit dans les bonnes pratiques de déploiement conteneurisé — des patterns que nous explorons dans notre article sur la conteneurisation avec Docker. Pour les équipes qui orchestrent leurs services LLM à grande échelle, les pratiques de gestion des workloads Kubernetes sont également indispensables pour garantir la résilience du pipeline d’observabilité.
Recommandation experte : commencer par les traces, pas par les métriques
Si je devais donner un seul conseil aux équipes qui démarrent l’observabilité de leurs systèmes LLM, ce serait celui-ci : commencez par instrumenter les traces distribuées avant de vous préoccuper des dashboards de métriques. Les traces vous donnent le contexte — elles vous montrent exactement ce qui s’est passé pour une requête spécifique qui a mal tourné. Les métriques agrégées vous indiquent qu’il y a un problème, mais pas pourquoi ni où. En production, la capacité à reproduire et comprendre un incident en quelques minutes vaut largement plus qu’un beau dashboard de tendances.
La maturité de l’écosystème OpenTelemetry autour des LLM progresse rapidement. Les conventions sémantiques GenAI se stabilisent, les librairies d’instrumentation automatique gagnent en fiabilité, et les backends comme Grafana Tempo ou Jaeger s’améliorent pour gérer les volumes de traces élevés. Investir dans cette infrastructure dès aujourd’hui, c’est se donner les moyens de piloter ses systèmes d’IA générative avec le même niveau d’exigence opérationnelle qu’un service critique — ce qu’ils sont, dès lors qu’ils touchent l’expérience utilisateur.
FAQ
- Quelle est la différence entre l’observabilité LLM et le monitoring applicatif classique ?
- Le monitoring classique se concentre sur des métriques systèmes (latence, taux d’erreur, utilisation des ressources) qui supposent un comportement déterministe. L’observabilité LLM ajoute une dimension fonctionnelle : la qualité des réponses générées, la consommation de tokens, les raisons de fin de génération. Elle nécessite des spans sémantiquement enrichis (attributs GenAI OTel) et des métriques métier spécifiques comme le TTFT ou le taux de troncature, absents des solutions de monitoring traditionnel.
- OpenTelemetry est-il compatible avec les principaux fournisseurs LLM (OpenAI, Anthropic, Mistral) ?
- Oui. Des librairies d’instrumentation Python comme opentelemetry-instrumentation-openai (pour OpenAI et Azure OpenAI) ou OpenLLMetry supportent les principaux fournisseurs via le protocole OTLP standard. Pour Mistral ou des modèles open source hébergés on-premise (via vLLM ou Ollama), l’instrumentation manuelle avec les conventions sémantiques GenAI OTel reste simple à implémenter et permet d’obtenir le même niveau de visibilité.
- Quel backend d’observabilité choisir pour les traces LLM : Grafana Tempo, Jaeger ou une solution SaaS ?
- Pour les équipes qui démarrent, une solution SaaS comme Grafana Cloud ou Datadog réduit considérablement la charge opérationnelle. Pour les organisations avec des contraintes de souveraineté des données (fréquent en France avec le RGPD), une stack open source auto-hébergée Prometheus + Grafana Tempo + Grafana est à privilégier. Jaeger est pertinent si votre équipe a déjà une expertise sur cet outil, mais Tempo offre une meilleure intégration native avec l’écosystème Grafana et un meilleur passage à l’échelle sur les volumes importants.




