Observabilidade
Introducao ao documento
Este documento consolida padrao de logs, healthchecks operacionais, metricas-chave e alertas recomendados a partir dos artefatos reais do repositorio.
Versionamento
- Versao do documento: 1.0.0
- Ultima atualizacao: 2026-03-17
- Responsavel: GitHub Copilot
Referencial teorico
- Three Pillars of Observability
- SRE Golden Signals
- Laravel Logging and Queue Monitoring
Padrao de logs
- Canal padrao: stack -> single em storage/logs/laravel.log.
- Nivel padrao orientado por LOG_LEVEL (debug por default em env exemplo).
- Middleware de API key registra log de erro com URI, metodo, body e headers quando falha auth.
- Evidencia: config/logging.php:20
- Evidencia: config/logging.php:40
- Evidencia: config/logging.php:46
- Evidencia: .env.example:7
- Evidencia: app/Http/Middleware/ApiKeyMiddleware.php:26
- Evidencia: app/Http/Middleware/ApiKeyMiddleware.php:31
Healthchecks
Infra local
- MySQL possui healthcheck mysqladmin ping.
- Evidencia: docker-compose.yml:33
- Evidencia: docker-compose.yml:36
Aplicacao
Nao existe endpoint dedicado de healthcheck no codigo observado. Como verificador minimo, usar endpoints existentes de baixa complexidade.
- Recomendacao operacional:
curl -f http://localhost:8001/
curl -f http://localhost:8001/api/test-auth
- Evidencia: routes/web.php:29
- Evidencia: routes/api.php:50
Metricas-chave
API
- Taxa de 2xx/4xx/5xx por endpoint critico (/api/appointments, /api/export-appointments).
- Latencia p95/p99 para criacao e consulta de slots.
- Taxa de 401 por api_key invalida/ausente.
- Evidencia: routes/api.php:28
- Evidencia: routes/api.php:30
- Evidencia: routes/api.php:46
- Evidencia: app/Http/Middleware/ApiKeyMiddleware.php:33
Fila e notificacao
- Jobs processados, pendentes e falhos no Horizon (queue default/redis).
- Falhas de envio de mailables ShouldQueue.
- Evidencia: config/horizon.php:185
- Evidencia: config/horizon.php:193
- Evidencia: app/Mail/AppointmentMail.php:9
- Evidencia: app/Mail/CancelAppointmentMail.php:9
Dados e disponibilidade
- Contagem de appointments por dia e colaborador.
- Taxa de conflito de agenda (HTTP 409).
- Erros de exportacao para S3.
- Evidencia: app/Http/Controllers/AppointmentController.php:176
- Evidencia: app/Http/Controllers/ExportAppointmentsController.php:103
Onde olhar logs
- Arquivo local: storage/logs/laravel.log.
- Logs de containers no ambiente local (laravel/mysql/redis).
- Logs de pipeline de build/deploy no GitHub Actions.
- Evidencia: config/logging.php:46
- Evidencia: docker-compose.yml:2
- Evidencia: .github/workflows/ci-cd-pipeline.yaml:14
Alertas recomendados
- API 5xx acima do baseline por 5 minutos em /api/appointments.
- Taxa de 401 acima do baseline (possivel rotacao de api_key quebrada).
- Falha de deploy nos jobs deploy-piloto/deploy-prod.
- Crescimento anormal de failed_jobs.
- Falha continua de exportacao CSV para S3.
- Evidencia: routes/api.php:28
- Evidencia: app/Http/Middleware/ApiKeyMiddleware.php:49
- Evidencia: .github/workflows/ci-cd-pipeline.yaml:50
- Evidencia: config/queue.php:90
- Evidencia: app/Http/Controllers/ExportAppointmentsController.php:103
Pendencias
- Nao foi identificado endpoint /health dedicado.
- Evidencia: routes/api.php:26
- Evidencia: routes/web.php:29
- Nao ha definicao explicita de metricas/alertas em ferramenta APM versionada no repositorio.
- Evidencia: config/logging.php:37
- Evidencia: .github/workflows/ci-cd-pipeline.yaml:1