Aller au contenu

Global Error Handler

Imaginez une quarantaine de workflows N8N qui tournent en permanence — synchronisation GitHub, mises a jour Docker, notifications Telegram, pipeline de contenu. Quand l’un d’eux plante a 3h du matin, comment savoir ce qui s’est passe, si c’est grave, et quoi faire ?

Le Global Error Handler (GEH) est la reponse : un systeme centralise qui intercepte chaque erreur, la classifie automatiquement, la stocke dans une file d’attente dediee, et envoie une notification Telegram avec des boutons d’action. Un seul point d’entree pour toutes les erreurs de l’infrastructure N8N.

WorkflowNodesRole
Global Error Handler19Capture, classification, notification
GEH Callback Actions30Retry, analyse AI, ignore, fix
GEH Fix Applier31Application et rollback des correctifs AI
DLQ Weekly Digest8Resume hebdomadaire des erreurs

GEH Callback Actions · 30 nodes

Global Error Handler · 19 nodes

~42 workflows N8N · Error Trigger

Extract Error · redact secrets

Check error_handling_config

DLQ Insert · err_

Classify · keyword rules

Notification Hub · Telegram avec boutons

Retry · 6n

Details AI · 9n

Ignore · 1n

Fix AI · 12n

GEH Fix Applier · 31 nodes

DLQ Weekly Digest · 8 nodes


Avant le GEH, les erreurs N8N etaient silencieuses. Un workflow echouait, N8N le notait dans ses logs internes, et personne ne le savait avant de constater un dysfonctionnement. Pas de classification, pas de notification, pas de visibilite.

ProblemeSans GEHAvec GEH
Erreurs silencieusesDecouvertes par hasard dans les logsNotification Telegram immediate
Pas de contexte”Workflow failed” sans detailsClassification, node en echec, stack trace
Retry manuelOuvrir N8N, trouver l’execution, relancerBouton [Retry] dans Telegram
Pas d’historiqueErreurs perdues apres purge N8NDead Letter Queue persistante
Erreurs repetitivesMeme alerte en boucleDeduplication + config par workflow

Le GEH ne gere pas les retries a l’aveugle. Il s’appuie sur le retry natif de N8N au niveau de chaque node :

NiveauMecanismeQuand
NodeRetry on Fail natif N8NErreurs transientes (timeout, 503, rate limit)
WorkflowBouton Retry via GEHQuand tous les retries node sont epuises

Quand un workflow echoue, voici ce qui se passe, etape par etape :

1. Capture — L’Error Trigger intercepte l’echec (y compris les erreurs d’activation).

2. Extraction — Un node Code normalise le contexte : workflow source, node en echec, message d’erreur, stack trace. Les donnees sensibles (tokens, mots de passe, connection strings) sont automatiquement masquees par une fonction redact().

3. Configuration — Le GEH consulte la table error_handling_config pour savoir si ce workflow a des regles specifiques (notifications desactivees, suppression temporaire, max retries custom).

4. Insertion DLQ — L’erreur est stockee dans la table error_dead_letter_queue avec un identifiant unique (err_<16hex>).

5. Classification — Des regles par mots-cles analysent le message d’erreur pour determiner le type et la severite :

Type detecteMots-clesSeverite
timeouttimeout, ETIMEDOUT, deadlinewarning
networkECONNREFUSED, ENOTFOUND, socketwarning
authentication401, 403, unauthorizedcritical
rate_limit429, rate limit, quotawarning
data_validationinvalid, schema, parse errorinfo
resourceout of memory, disk fullcritical
configurationmissing credential, not foundcritical

6. Notification — Si les notifications sont activees pour ce workflow, le GEH appelle le Notification Hub avec un message formate et des boutons d’action.

Quand la notification arrive sur Telegram, elle propose quatre boutons :

[Retry] — Relance l’execution echouee via l’API N8N. Avant de relancer, le systeme verifie que l’erreur est eligible au retry (can_auto_retry). Le compteur de retries est incremente dans la DLQ.

[Details] — Demande une analyse AI a Claude. La premiere demande genere l’analyse (type d’erreur, cause probable, suggestion de fix), les suivantes utilisent le cache stocke dans la DLQ. Pratique pour comprendre une erreur complexe sans ouvrir N8N.

[Ignore] — Marque l’erreur comme resolue dans la DLQ. Utile pour les faux positifs ou les erreurs ephemeres deja corrigees.

[Fix] — Fonctionnalite avancee : Claude analyse le workflow defaillant et propose un correctif automatique. Le fix est stocke comme proposition, puis un second workflow (GEH Fix Applier) gere l’application avec backup, confirmation et rollback.

Chaque workflow peut avoir ses propres regles dans la table error_handling_config :

ParametreDefautUsage
error_handling_enabledtrueDesactiver pour un workflow en maintenance
max_retries3Override du nombre de retries
notify_on_errortrueCouper les notifications sans couper la DLQ
auto_retry_enabledfalseRetry automatique sans intervention
suppress_untilnullSuppression temporaire (ISO timestamp)

Chaque dimanche a 9h, le workflow DLQ Weekly Digest genere un resume des erreurs de la semaine et l’envoie via le Notification Hub. Ce digest permet de reperer les patterns : un workflow qui echoue regulierement, un type d’erreur recurrent, des retries qui ne resolvent jamais le probleme.

Le digest inclut :

  • Nombre total d’erreurs par severite
  • Top workflows en erreur
  • Erreurs non resolues (retry_status = pending/exhausted)
  • Tendances par rapport a la semaine precedente

LimiteImpactMitigation
Classification par reglesTypes inconnus classes “unknown”Analyse AI on-demand via [Details]
Pas d’auto-retryChaque retry necessite un clicFlag auto_retry_enabled prepare mais non deploye
Fix AI experimentalLes correctifs proposes ne sont pas toujours applicablesDouble confirmation avant application + rollback automatique
Pas de correlationErreurs liees non groupeesIdentifiable via le digest hebdomadaire

Si le volume d’erreurs augmente :

  • Activer l’auto-retry pour les erreurs transientes (timeout, rate limit)
  • Grouper les erreurs similaires dans le digest
  • Ajouter un seuil d’alerte : “5 erreurs du meme workflow en 1h = escalade”

Si besoin de correlation inter-workflows :

  • Tracer les chaines d’execution (workflow A appelle B qui appelle C)
  • Si C echoue, montrer le contexte complet de la chaine
  • Permettre le retry depuis le workflow parent

Si l’equipe s’agrandit :

  • Assignation des erreurs par domaine (Docker → ops, Odoo → business)
  • Escalade si non traitee apres un delai configurable
  • Dashboard Grafana avec metriques DLQ

  • Glossaire — Dead Letter Queue, Error Trigger