@eqs/telemetry : OpenTelemetry à ressource unique et journal corrélé, extraits de HQ #7

Merged
nicolas-fryder merged 1 commit from feat/telemetry into main 2026-09-06 19:27:55 +00:00

Quatrième package de la ROADMAP. Inclut feat/errors tant qu'elle n'est pas fusionnée.

  • startTelemetry (/node) : opt-in par OTEL_EXPORTER_OTLP_ENDPOINT ou OTEL_ENABLED, une ressource pour traces/métriques/logs avec OTEL_RESOURCE_ATTRIBUTES fusionné, instrumentations http/express/nestjs/pg/undici, eqs.client_name/eqs.client_version/request_id lus sur les en-têtes entrants, jamais de capture d'en-têtes, arrêt propre sur SIGTERM. En ESM, enregistre le hook de chargement OTel : le reste de l'application s'importe après.
  • log : JSON-lines ts/level/service/event/champs/trace_id/span_id, clés sensibles masquées en profondeur, émis aussi en OTLP quand le SDK est actif ; withSpan, tracer, meter, marquerOperation.
  • /nest : OperationIdInterceptor et @OperationId, <tag>.<méthode> comme la spec ; /browser : registerBrowserTelemetry.
  • Six contrôles prouvés contre une application vide en processus enfant et un collecteur OTLP de test (test/collecteur.ts, que @eqs/testing reprendra) : span serveur complet, log corrélé, traceparent propagé, redaction, inertie sans endpoint, console résiduel.
  • 17 tests ; pnpm-workspace.yaml approuve le script de protobufjs.

🤖 Generated with Claude Code

Quatrième package de la ROADMAP. Inclut `feat/errors` tant qu'elle n'est pas fusionnée. - `startTelemetry` (`/node`) : opt-in par `OTEL_EXPORTER_OTLP_ENDPOINT` ou `OTEL_ENABLED`, une ressource pour traces/métriques/logs avec `OTEL_RESOURCE_ATTRIBUTES` fusionné, instrumentations http/express/nestjs/pg/undici, `eqs.client_name`/`eqs.client_version`/`request_id` lus sur les en-têtes entrants, jamais de capture d'en-têtes, arrêt propre sur SIGTERM. En ESM, enregistre le hook de chargement OTel : le reste de l'application s'importe après. - `log` : JSON-lines `ts/level/service/event/champs/trace_id/span_id`, clés sensibles masquées en profondeur, émis aussi en OTLP quand le SDK est actif ; `withSpan`, `tracer`, `meter`, `marquerOperation`. - `/nest` : `OperationIdInterceptor` et `@OperationId`, `<tag>.<méthode>` comme la spec ; `/browser` : `registerBrowserTelemetry`. - Six contrôles prouvés contre une application vide en processus enfant et un collecteur OTLP de test (`test/collecteur.ts`, que `@eqs/testing` reprendra) : span serveur complet, log corrélé, `traceparent` propagé, redaction, inertie sans endpoint, `console` résiduel. - 17 tests ; `pnpm-workspace.yaml` approuve le script de `protobufjs`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
- enveloppe D-019 { statusCode, code, message, errors?, requestId, path,
  timestamp } ; vocabulaire fermé de dix codes ; EqsError avec ses fabriques
- traduire() : EqsError, exception HTTP d'un framework (par forme),
  class-validator (message: string[] → 422 VALIDATION + errors[]), Prisma par
  forme (P2002 → 409, P2025 → 404, P2003 → 409, P2000 → 422), le reste en 500
  sans message interne ni pile dans le corps
- /nest : EqsExceptionFilter, requestIdMiddleware, ApiStandardErrorResponses,
  ErrorResponseDto ; /next : toResponse, withRequestId ; /client : ApiError,
  parseError
- sept contrôles de conformité, prouvés contre une application Nest réelle
  démarrée avec le filtre (rend []) et sans (cinq règles déclenchées)
- Vitest transforme avec swc (métadonnées de décorateurs) ; pnpm-workspace
  approuve le script d'installation de @swc/core et refuse @scarf/scarf
- 21 tests

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- startTelemetry (./node) : opt-in par OTEL_EXPORTER_OTLP_ENDPOINT ou
  OTEL_ENABLED, une ressource pour traces/métriques/logs avec
  OTEL_RESOURCE_ATTRIBUTES fusionné, instrumentations http/express/nestjs/pg/
  undici, eqs.client_name/eqs.client_version/request_id lus sur les en-têtes
  entrants, jamais de capture d'en-têtes, arrêt propre sur SIGTERM ; en ESM,
  enregistre le hook de chargement OTel
- log (index) : JSON-lines ts/level/service/event/champs/trace_id/span_id,
  clés sensibles masquées en profondeur, émis aussi en OTLP quand le SDK est
  actif ; withSpan, tracer, meter, marquerOperation
- ./nest : OperationIdInterceptor et @OperationId, <tag>.<méthode> comme la
  spec ; ./browser : registerBrowserTelemetry (HQ instrumentation-client)
- six contrôles de conformité prouvés contre une application vide en
  processus enfant et un collecteur OTLP de test : span serveur complet, log
  corrélé, traceparent propagé, redaction, inertie sans endpoint, console
- 17 tests ; pnpm-workspace approuve le script de protobufjs

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
nicolas-fryder deleted branch feat/telemetry 2026-09-06 19:27:55 +00:00
nicolas-fryder referenced this pull request from a commit 2026-09-09 21:51:55 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Infrastructure/eqs-platform!7
No description provided.