Skip to content

[Relay][P1] Añadir OpenTelemetry end-to-end y métricas operativas #49

Description

@0bkevin

Contexto auditado

T3 Connect emite spans HTTP, endpoint y DB; comparte un dataset entre Worker, Mobile y clientes, usa tokens de ingest separados y conserva trace correlation en errores. Referencias: relay observability, observability.ts y relay tracing.

Brecha actual

El commit 967f4e5610f631bac9e4b9e69b07d956185491ca añade logs estructurados y devuelve X-Request-ID, pero no hay spans distribuidos Mobile → Relay → connector → Hermes, métricas, trace ID estable en errores, exporter, dashboards ni alertas. Diagnosticar “se quedó conectando”, backpressure, un stream cortado o una DB lenta requiere correlación manual entre logs de máquinas distintas.

Propuesta

  1. Instrumentar REST, upgrade WebSocket, conexión, route/enqueue, request/stream terminal, store queries, reconnect y Hermes forwarding.
  2. Propagar W3C trace context mediante metadata de frames permitida; no copiar headers arbitrarios del cliente.
  3. Devolver trace ID en errores estructurados y mostrar un “diagnostic ID” copiable en Mobile.
  4. Añadir métricas de conexiones por role, reconnects, auth failures, pending/queue depth, dropped frames, TTL expirations, latencia, bytes, DB pool y status Hermes.
  5. Definir cardinalidad: agent/device/thread solo cuando sea necesario y hashed/redacted; nunca tokens, códigos, bodies, prompts ni Authorization.
  6. Usar credenciales de ingest separadas y mínimas para Relay, Mobile y connector.
  7. Crear dashboards y alertas para disponibilidad, error rate, p95/p99, saturation/backpressure, DB y reconnect storms.
  8. Documentar sampling, retention y un runbook de incidente.

Criterios de aceptación

  • Una operación completa se puede seguir con un trace ID a través de las cuatro capas.
  • Errores de auth no registran credenciales ni material DPoP.
  • Las métricas detectan saturación antes de perder frames y no tienen cardinalidad sin cota.
  • La caída del exporter nunca rompe tráfico de usuario.
  • Hay tests de propagación/redacción y un smoke test del exporter.
  • El dashboard distingue fallo de Mobile, Relay, connector, Hermes y PostgreSQL.

Relacionado con la superficie operativa de #30, pero enfocado en telemetría del Relay.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions