Observabilidade
Introdução ao documento
Este documento descreve o que já existe de observabilidade no serviço (logs e probes) e os pontos que ainda precisam de formalização. Evidência: src/server.ts:52 Evidência: src/server.ts:168
Versionamento
- Versão do documento:
2.0.0. - Última atualização:
2026-03-18. Evidência: codex-promts.md:16
Referencial teórico
- Healthchecks HTTP usados em Kubernetes.
- Logging estruturado mínimo orientado a troubleshooting. Evidência: helm/templates/deployment.yaml:53 Evidência: src/server.ts:62
Padrão de logs
Logs implementados no código
- Log de entrada HTTP com método, path, query, body (exceto GET) e mascaramento do header
authorization. - Logs de erro global (
unhandledRejection,uncaughtException, middleware de erro). - Logs específicos do worker de fila (
warn/errorpor retry e falha definitiva). Evidência: src/server.ts:62 Evidência: src/server.ts:67 Evidência: src/server.ts:18 Evidência: src/server.ts:263 Evidência: src/workers/groupLinkDispatchWorker.ts:145
Lacunas observadas
- Não há
request-idpadronizado nem correlação distribuída. - Não há biblioteca de métricas/telemetria (OpenTelemetry, Prometheus client) no
package.json. Evidência: src/server.ts:62 Evidência: package.json:14
Healthchecks
GET /api/liveness: retornastatus: ok.GET /api/readiness: validadb.authenticate()e retorna200ou503.- Helm configura
livenessProbeereadinessProbeusando esses endpoints. Evidência: src/server.ts:168 Evidência: src/server.ts:176 Evidência: src/server.ts:180 Evidência: helm/templates/deployment.yaml:53 Evidência: helm/templates/deployment.yaml:59
Métricas-chave
Disponíveis de forma indireta (via logs/endpoints)
- Taxa de erro HTTP (
500,503,404) observável em respostas e logs. - Saúde do banco pelo readiness.
- Taxa de falha da fila pelo volume de retries/falhas no worker. Evidência: src/server.ts:265 Evidência: src/server.ts:192 Evidência: src/server.ts:275 Evidência: src/workers/groupLinkDispatchWorker.ts:130
Recomendadas para evolução
- Latência p95/p99 por rota.
- Throughput por endpoint.
- Profundidade da fila (
pending,processing,failed). Evidência: src/workers/groupLinkDispatchWorker.ts:56 Evidência: src/models/groupLinkDispatchQueue.ts:87
Onde olhar logs
- Execução local Node: terminal do processo iniciado por
npm run dev/npm run start. - Execução Docker local:
docker compose logs -f onboarding-api. - Kubernetes:
kubectl logsno deployment do chart. Evidência: package.json:8 Evidência: docker-compose.yml:6 Evidência: helm/templates/deployment.yaml:36
Alertas recomendados
- Readiness
503contínuo por mais de 5 minutos. - Taxa de erro 5xx acima do baseline por janela de 5 minutos.
- Crescimento de jobs
failednaGroupLinkDispatchQueue. - Falha recorrente de assinatura/criptografia no
POST /. - Falha de validação de webhook (
403emGET /webhook). Evidência: src/server.ts:192 Evidência: src/server.ts:265 Evidência: src/models/groupLinkDispatchQueue.ts:87 Evidência: src/encryption.ts:45 Evidência: src/routes/webhook.ts:95
Pendências
- Confirmar stack oficial de monitoramento/alerta (Grafana, Datadog, CloudWatch etc.), pois não há referência explícita no código.
- Confirmar retenção e destino de logs em produção. Evidência: package.json:14 Evidência: .github/workflows/ci-cd-pipeline.yml:69