Je trace n8n avec OpenTelemetry en envoyant ses spans OTLP vers ma stack d’observabilité. Là, les workflows arrêtent d’être une boîte noire. On voit les lenteurs, les erreurs, les appels tiers, les workers, et on corrèle enfin n8n avec le reste du système.
Pourquoi tracer n8n ?
Il faut tracer n8n parce que les workflows sont devenus de vrais systèmes de production, pas juste des petites automatisations confortables.
Aujourd’hui, un workflow n8n peut déclencher un paiement, créer un ticket support, synchroniser un CRM, appeler un backend interne, enrichir une fiche client avec un LLM, envoyer une alerte Slack ou orchestrer plusieurs API tierces. Quand ça ralentit ou quand ça casse, ce n’est pas juste “un node rouge” dans une interface. C’est parfois une commande bloquée, un client qui attend, une équipe support qui perd du temps, ou une donnée métier qui n’arrive jamais au bon endroit.
Avant OpenTelemetry, l’analyse restait surtout centrée sur la vue d’exécution dans n8n. On pouvait voir quel node avait échoué, combien de temps il avait pris, quelle donnée était entrée ou sortie. C’est utile, clairement. Mais ça ne suffit pas toujours.
Le vrai problème, c’est le contexte. Un node HTTP peut être lent, mais pourquoi ? Parce que l’API externe répond mal ? Parce que votre backend interne attend une base de données ? Parce qu’un modèle IA met 12 secondes à répondre ? Parce qu’un CRM limite vos appels ? Sans trace distribuée, vous regardez une petite portion du trajet, pas toute la chaîne.
Entre nous, on le sait bien, faire appel à un consultant en automatisation intelligente et en agent IA, c’est souvent le raccourci le plus malin. On en parle ?
OpenTelemetry règle précisément ça. OpenTelemetry, ou OTel, c’est un standard ouvert pour collecter des traces, des métriques et des logs. Une trace distribuée permet de suivre une requête ou une exécution à travers plusieurs systèmes. Avec ça, n8n n’est plus observé dans son coin. Il apparaît dans la même trace que vos API, vos bases, vos services internes, vos LLM, Slack, HubSpot, Salesforce ou n’importe quel autre composant instrumenté.
J’ai déjà vu des équipes chercher pendant des heures dans n8n alors que le vrai souci venait d’un service tiers lent ou d’une API interne instable. Chacun regardait son outil, chacun disait “chez moi ça va”. OpenTelemetry évite ce ping-pong. On suit le flux complet, on voit où le temps part, et on arrête de deviner.
L’autre point important, c’est le côté vendor-neutral. OpenTelemetry est un standard ouvert, largement adopté. Vous pouvez envoyer vos traces vers Jaeger, Tempo, Datadog, Honeycomb, New Relic ou Grafana Cloud sans enfermer votre architecture dans un seul fournisseur.
Maintenant que n8n peut être observé comme un vrai service applicatif, il faut regarder ce qu’il émet exactement.
Comment ça fonctionne ?
N8n émet des spans OpenTelemetry pour les exécutions de workflows et de nodes, puis les exporte en OTLP HTTP au format Protobuf vers un collector ou une plateforme compatible.
Une span, c’est simplement un morceau mesurable d’une exécution. Elle a un début, une fin, une durée, un statut, et du contexte. Le contexte, c’est ce qui permet de dire “ce node appartient à ce workflow”, ou “cet appel HTTP fait partie de cette trace globale”. Rien de magique, juste une façon propre de relier les événements entre eux.
Techniquement, les points importants sont assez clairs. N8n utilise OTLP HTTP en Protobuf. OTLP veut dire OpenTelemetry Protocol, le protocole standard pour envoyer des traces, métriques et logs. En HTTP, l’endpoint standard utilise souvent le port 4318. Et surtout, l’intégration ne demande pas forcément de sidecar, donc pas besoin d’un conteneur collé à chaque instance n8n juste pour exporter les traces.
Dans une architecture saine, je fais souvent pointer n8n vers un OpenTelemetry Collector. Le collector reçoit les traces, les nettoie si besoin, puis les route vers Jaeger, Tempo, Datadog, Honeycomb, New Relic ou Grafana Cloud. C’est là qu’on évite le verrouillage. N8n parle un standard, pas le dialecte d’un fournisseur.
La propagation du contexte se fait avec le header W3C traceparent. C’est un petit en-tête HTTP qui transporte l’identifiant de trace et l’identifiant de span courant. Si n8n reçoit une requête avec un traceparent, les spans générées par n8n deviennent enfants de la trace existante. Si un node HTTP Request appelle un autre service, il peut injecter ce traceparent pour continuer la trace côté service appelé. C’est ça qui permet de passer d’un log isolé à une histoire complète de bout en bout.
Il y a aussi des cas propres à n8n à garder en tête. Les sous-workflows sont parentés au workflow appelant, ce qui rend les dépendances lisibles. Les workflows qui reprennent après un wait utilisent des span links, des liens entre spans, pour rattacher des exécutions longues sans mentir sur la durée réelle. En mode queue, il faut garder les mêmes variables OpenTelemetry sur les instances n8n et les workers, sinon le traçage devient vite incohérent. Je l’ai déjà vu chez un client, deux workers bien configurés et un troisième oublié, et la moitié des traces semblaient “cassées”.
| Élément n8n | Ce qu’on observe | Intérêt concret |
| Workflow | Une trace ou un ensemble de spans liées à l’exécution globale. | Voir la durée totale et repérer où le temps part. |
| Node | Une span par action importante exécutée dans le workflow. | Identifier le node lent, en erreur, ou instable. |
| Sous-workflow | Des spans parentées au workflow appelant. | Comprendre les appels internes sans perdre le fil. |
| Wait | Des span links entre l’exécution initiale et la reprise. | Suivre les workflows longs sans fausser les durées. |
| HTTP Request | Injection ou réception du header traceparent. | Continuer la trace vers les services externes. |
| Queue worker | Des spans émises par plusieurs instances n8n. | Garder une vue cohérente en architecture distribuée. |
Que peut-on diagnostiquer ?
On peut diagnostiquer les lenteurs, les erreurs, les dépendances instables et les chemins d’exécution complets. C’est surtout utile quand n8n ne travaille pas seul, ce qui est presque toujours le cas dès qu’un workflow parle à un paiement, un CRM, une base de données, un outil IA ou Slack.
Premier cas très classique : un remboursement lent. Le workflow démarre dans n8n, appelle un service de paiement, met à jour le CRM, puis notifie le support. Sans trace, on regarde les logs, on rafraîchit trois consoles, et on finit souvent par dire “ça doit venir de l’API paiement”. Avec une trace distribuée, on voit le chemin complet. On voit si le temps part dans un node n8n, dans l’appel tiers, dans un timeout, dans une API interne ou dans une étape aval comme la notification support. On arrête de deviner. On regarde les preuves.
Deuxième cas : un agent IA. Un agent peut enchaîner un appel LLM, c’est-à-dire un grand modèle de langage comme GPT ou Claude, puis appeler un outil interne, lire une base de données, interroger une API métier et envoyer une notification Slack. Là, le vrai sujet n’est pas juste “l’IA a répondu lentement”. Le sujet, c’est de corréler tout le chemin d’exécution. OpenTelemetry aide à relier les étapes entre elles, au lieu d’avoir des morceaux isolés. Des traces d’agents plus détaillées sont annoncées en développement, notamment pour les appels LLM, les tool calls, donc les outils appelés par l’agent, et les évaluations. Je le prends comme une direction intéressante, pas comme une promesse déjà totalement disponible partout aujourd’hui.
Troisième cas : le mode queue avec plusieurs workers. Quand n8n scale horizontalement, plusieurs workers peuvent exécuter des runs différents, parfois en parallèle. Si les workers partagent la même configuration OpenTelemetry, les runs distribués restent lisibles. On peut voir quel worker a exécuté quoi, et garder une continuité de trace entre le déclenchement, l’exécution et les appels externes. Pour une équipe ops, ça change beaucoup de choses.
Mais il faut être honnête. OpenTelemetry ne remplace pas la compréhension métier du workflow. Il donne les preuves, les timings et les liens. L’équipe doit encore savoir ce que signifie une erreur de paiement, une relance CRM ou un échec LLM. Pour en tirer quelque chose, il faut maintenant une configuration minimale propre, identique sur les bonnes instances.
Comment l’activer proprement ?
Il suffit d’activer OpenTelemetry dans n8n et de définir l’endpoint OTLP HTTP sur chaque instance concernée. C’est vraiment le point clé. Si vous avez une instance principale et plusieurs workers, je dois retrouver ces variables partout, pas juste sur le container web.
N8N_OTEL_ENABLED=true
N8N_OTEL_EXPORTER_OTLP_ENDPOINT=http://<your-collector-host>:4318
Le collector sert de point d’entrée neutre. Il reçoit les traces en OTLP HTTP, généralement encodées en Protobuf, un format binaire compact utilisé par OpenTelemetry. Ensuite il peut enrichir les données, filtrer ce qui ne sert à rien, router certains flux, puis envoyer vers Jaeger, Tempo, Datadog, Honeycomb, New Relic ou Grafana Cloud.
C’est là que l’approche est saine. n8n n’impose pas un fournisseur particulier. Vous envoyez vers un collector, puis vous choisissez votre backend d’observabilité. Si demain vous quittez Datadog pour Tempo, ou l’inverse, vous ne recodez pas vos workflows. Vous changez surtout la configuration du collector. C’est comme ça qu’on limite le verrouillage.
Je démarre toujours petit. Un environnement local ou de test, un collector, un backend simple comme Jaeger ou Tempo, puis quelques workflows représentatifs. Pas besoin de tout brancher d’un coup. Je lance des workflows avec appels HTTP, des sous-workflows, des waits, et le mode queue si l’architecture l’utilise. C’est souvent là que les surprises arrivent, surtout quand les workers ne sont pas configurés pareil que l’instance principale.
Les pièges classiques sont assez bêtes, mais je les vois souvent chez des clients. Activer n8n et oublier les workers. Mettre un endpoint accessible depuis son laptop, mais pas depuis les containers. Confondre le port OTLP HTTP 4318 avec le port OTLP gRPC 4317. Ne pas propager le header traceparent dans les appels sortants, alors que c’est lui qui permet de relier une trace entre plusieurs services. Regarder les jolies traces sans les rapprocher des vrais incidents, et là on perd vite l’intérêt.
| Point à vérifier | Pourquoi c’est important | Signe que c’est bon |
| Activation | Sans N8N_OTEL_ENABLED=true, n8n n’émet pas de traces. | Les spans n8n commencent à apparaître dans le backend. |
| Endpoint | n8n doit envoyer vers le collector OTLP HTTP. | L’URL pointe vers http://<collector>:4318. |
| Collector joignable | Les containers doivent résoudre et atteindre l’endpoint. | Aucune erreur de connexion dans les logs n8n. |
| Workers configurés | En mode queue, les exécutions partent souvent des workers. | Les traces couvrent aussi les jobs exécutés par les workers. |
| Traces visibles | Il faut valider le flux complet jusqu’au backend. | Un workflow lancé apparaît dans Jaeger, Tempo ou votre outil. |
| Propagation HTTP | Le traceparent relie n8n aux services appelés. | Une même trace traverse n8n et les APIs externes. |
Qu’est-ce qui arrive ensuite ?
La suite logique, elle est assez claire : n8n va vers des traces plus détaillées et une observabilité plus complète. Pas juste “mon workflow a planté”, mais “où exactement ça a ralenti, quel appel a coûté cher, quelle dépendance a répondu bizarrement, et dans quel contexte”. C’est là que l’approche OpenTelemetry devient intéressante, parce qu’on garde une logique portable, sans se coller à un outil unique.
Les évolutions annoncées vont surtout dans trois directions :
- Des traces d’agents IA plus riches, avec plus de détails sur les appels LLM, les tool calls et les évaluations.
- Du traçage applicatif interne, pour voir ce qui se passe dans n8n lui-même, pas seulement dans les workflows.
- Des métriques d’instance exportables, avec la même logique OpenTelemetry, pour suivre la santé globale de la plateforme.
Sur les agents IA, c’est probablement le morceau le plus attendu. Un agent, ce n’est pas juste un appel API. Il peut raisonner, appeler un outil, relancer une requête, interroger une base, recevoir une réponse moyenne, puis prendre une décision pas totalement déterministe. Donc quand ça déraille, c’est vite pénible à diagnostiquer. Avoir des spans plus riches pour les appels LLM, les appels d’outils et les étapes d’évaluation aiderait énormément. Je reste prudent, ces éléments sont encore en développement, mais c’est clairement la bonne direction.
Le traçage applicatif interne, lui, permettrait d’aller plus bas dans la pile. On pourrait voir les requêtes base de données lentes, les timings d’API internes, les erreurs côté n8n, les temps d’attente. Là, on ne regarde plus seulement “tel node a pris 12 secondes”. On peut commencer à comprendre si le problème vient du workflow, de la base, de l’instance, d’une API interne, ou d’un mélange un peu sale des quatre. J’ai déjà vu ce genre de cas chez un client : tout le monde accusait l’API externe, alors que le vrai souci venait d’une file saturée et d’une base trop sollicitée.
Les métriques d’instance complètent le tableau. Les traces répondent à “qu’est-ce qui s’est passé sur cette exécution précise ?”. Les métriques répondent plutôt à “est-ce que mon instance est en bonne santé ?”. Profondeur de file, workflows actifs, jauges CPU ou mémoire, ressources disponibles, rythme d’exécution… Ce sont des signaux simples, mais très utiles.
Pour une équipe Data, IA ou automatisation, le bon réflexe est simple : traiter n8n comme un composant de production observable dès le départ. Pas après le premier incident sérieux, quand tout le monde cherche les logs à 23h.
Alors, vous tracez quoi en premier ?
OpenTelemetry change clairement la manière de superviser n8n. On ne regarde plus seulement une exécution isolée dans l’interface. On replace chaque workflow dans une trace complète, avec ses nodes, ses appels HTTP, ses sous-workflows, ses waits, ses workers et ses dépendances externes. Pour moi, c’est surtout ça le vrai gain : moins d’hypothèses, moins d’allers-retours entre équipes, plus de preuves. La mise en place reste assez légère avec deux variables d’environnement et un endpoint OTLP. Si vos workflows touchent au support, au CRM, aux paiements ou aux agents IA, le bénéfice est simple : vous dépannez plus vite et vous fiabilisez votre automatisation.
FAQ
- À quoi sert OpenTelemetry dans n8n ?
OpenTelemetry sert à tracer les exécutions n8n comme des composants de production. On peut suivre un workflow, ses nodes, ses appels HTTP, ses sous-workflows et ses erreurs dans la même stack d’observabilité que les autres services. - Quels outils peuvent recevoir les traces n8n ?
n8n exporte les traces via OTLP HTTP en Protobuf. Elles peuvent être envoyées vers un collector puis vers des outils compatibles comme Jaeger, Tempo, Datadog, Honeycomb, New Relic ou Grafana Cloud. - Quelle configuration minimale faut-il pour activer OpenTelemetry ?
La configuration minimale consiste à définir N8N_OTEL_ENABLED=true et N8N_OTEL_EXPORTER_OTLP_ENDPOINT=http://:4318 sur chaque instance n8n concernée, y compris les workers si vous utilisez le mode queue. - Est-ce que n8n propage le contexte de trace ?
Oui, n8n peut utiliser le header traceparent entrant pour créer des spans enfants, et les nodes HTTP Request peuvent injecter traceparent dans les appels sortants. C’est ce qui permet de suivre une exécution de bout en bout entre plusieurs services. - OpenTelemetry remplace-t-il les logs n8n ?
Non. Les traces complètent les logs. Les logs donnent du détail ponctuel, les traces montrent le chemin complet, les durées et les dépendances. Ensemble, ils rendent le diagnostic beaucoup plus rapide.
A propos de l’auteur
Je suis Franck Scandolera, expert et formateur en tracking avancé server-side, Analytics Engineering, automatisation No/Low Code avec n8n, intégration de l’IA en entreprise et SEO/GEO. Je dirige l’agence webAnalyste et l’organisme Formations Analytics. J’accompagne des équipes qui veulent rendre leurs données, leurs automatisations et leurs parcours clients plus fiables, avec des clients comme Logis Hôtel, Yelloh Village, BazarChic, la Fédération Française de Football ou Texdecor. Si vous voulez industrialiser n8n, mieux tracer vos workflows ou connecter vos outils Data et IA proprement, contactez-moi.
⭐ Data Analyst, Analytics Engineer et expert dans l’automatisation IA ⭐
Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
Data Analyst & Analytics engineering : tracking propre RGPD, entrepôt de données (GTM server, BigQuery…), modèles (dbt/Dataform), dashboards décisionnels (Looker, SQL, Python).
Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, Make, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.





