Fase 4: Observabilidade e Monitoramento
Duração: 2 semanas (14 dias úteis)
Prioridade: 🟡 ALTA
Bloqueia: Operação eficiente em produção
Estimativa Total: 80 horas
Status: ✅ 100% Completo
🎯 Objetivo
Observabilidade completa com métricas, logs e tracing.
📋 Tarefas Detalhadas
Semana 7: Logging e Métricas
7.1 Logs Centralizados
Estimativa: 24 horas (3 dias)
Status: ✅ 100% Completo
Tarefas:
- Escolher plataforma (Seq, Application Insights, ou ELK)
- Configurar Serilog sink para plataforma escolhida
- Adicionar enrichers (MachineName, ThreadId, etc.)
- Configurar níveis de log por ambiente
- Adicionar structured logging em pontos críticos
- Melhorar Correlation ID middleware
- Testar logs centralizados
- Documentar configuração
Arquivos a Modificar:
backend/Arah.Api/Program.cs(Serilog configuration)backend/Arah.Api/Middleware/CorrelationIdMiddleware.cs
Critérios de Sucesso:
- ✅ Logs centralizados funcionando
- ✅ Enrichers configurados
- ✅ Níveis de log por ambiente
- ✅ Structured logging implementado
- ✅ Correlation ID em todos os logs
- ✅ Documentação completa
7.2 Métricas Básicas
Estimativa: 32 horas (4 dias)
Status: ✅ 100% Completo
Tarefas:
- Escolher plataforma (Prometheus/Grafana ou Application Insights)
- Adicionar pacote de métricas (prometheus-net.AspNetCore)
- Configurar métricas HTTP (request rate, error rate, latência)
- Adicionar métricas de negócio (posts criados, eventos, etc.)
- Adicionar métricas de sistema (CPU, memória, conexões)
- Criar dashboards básicos
- Configurar alertas básicos
- Documentar métricas
Arquivos a Criar:
backend/Arah.Application/Metrics/ArapongaMetrics.csbackend/Arah.Api/Metrics/(novo diretório)docs/METRICS.md
Arquivos a Modificar:
backend/Arah.Api/Program.cs- Services principais (instrumentar)
Critérios de Sucesso:
- ✅ Endpoint /metrics exposto
- ✅ Métricas HTTP automáticas
- ✅ Métricas de negócio coletadas
- ✅ Dashboards criados
- ✅ Alertas configurados
- ✅ Documentação completa
Semana 8: Tracing e Monitoramento Avançado
8.1 Distributed Tracing
Estimativa: 24 horas (3 dias)
Status: ✅ 100% Completo
Tarefas:
- Adicionar OpenTelemetry
- Configurar tracing para HTTP requests
- Configurar tracing para database queries
- Configurar tracing para eventos
- Integrar com Jaeger ou Application Insights
- Testar distributed tracing
- Documentar configuração
Arquivos a Criar:
backend/Arah.Api/Tracing/(novo diretório)
Arquivos a Modificar:
backend/Arah.Api/Program.cs
Critérios de Sucesso:
- ✅ OpenTelemetry configurado
- ✅ Tracing de HTTP requests funcionando
- ✅ Tracing de database queries funcionando
- ✅ Tracing de eventos funcionando
- ✅ Visualização em Jaeger/Application Insights
- ✅ Documentação completa
8.2 Monitoramento Avançado
Estimativa: 16 horas (2 dias)
Status: ✅ 100% Completo
Tarefas:
- Criar dashboard de performance
- Criar dashboard de negócio
- Criar dashboard de sistema
- Configurar alertas críticos
- Configurar alertas de negócio
- Configurar alertas de sistema
- Documentar dashboards e alertas
Arquivos a Criar:
docs/MONITORING.md- Dashboards (Grafana ou Application Insights)
Critérios de Sucesso:
- ✅ Dashboards criados
- ✅ Alertas configurados
- ✅ Documentação completa
8.3 Runbook e Troubleshooting
Estimativa: 16 horas (2 dias)
Status: ✅ 100% Completo
Tarefas:
- Criar runbook de operações
- Documentar troubleshooting comum
- Documentar procedimentos de emergência
- Documentar rollback procedures
- Documentar escalação
- Criar playbook de incidentes
Arquivos a Criar:
docs/RUNBOOK.mddocs/TROUBLESHOOTING.mddocs/INCIDENT_PLAYBOOK.md
Critérios de Sucesso:
- ✅ Runbook completo
- ✅ Troubleshooting documentado
- ✅ Procedimentos de emergência documentados
- ✅ Playbook de incidentes criado
📊 Resumo da Fase 4
| Tarefa | Estimativa | Status | Prioridade |
|---|---|---|---|
| Logs Centralizados | 24h | ✅ 100% Completo | 🟡 Alta |
| Métricas Básicas | 32h | ✅ 100% Completo | 🟡 Alta |
| Distributed Tracing | 24h | ✅ 100% Completo | 🟡 Alta |
| Monitoramento Avançado | 16h | ✅ 100% Completo | 🟡 Alta |
| Runbook e Troubleshooting | 16h | ✅ 100% Completo | 🟡 Alta |
| Total | 80h (14 dias) | ✅ 100% Completo |
4.X Configuração de Mapas e Geo-localização (Complementar)
Estimativa: 16 horas (2 dias)
Status: ⏳ Pendente
Prioridade: 🟢 Baixa
Contexto: Raio de busca, limites de distância e configuração de provedores de mapas atualmente fixos no código. Esta tarefa permite configuração por território para ajustes baseados em densidade territorial e integração com diferentes provedores.
Tarefas:
- Criar modelo de domínio
MapConfig:-
Id,TerritoryId(nullable para config global) -
SearchRadiusMeters(int, raio de busca em metros) -
MaxDistanceMeters(int, distância máxima para "territórios próximos") -
MapProvider(enum: Google, Mapbox, OpenStreetMap, etc.) -
ProviderSettings(JSON, configurações específicas do provider) -
DefaultZoom(int, nível de zoom padrão) -
Bounds(JSON, limites de área opcionais) -
Enabled(bool) -
CreatedAtUtc,UpdatedAtUtc
-
- Criar
IMapConfigRepositorye implementações (Postgres, InMemory) - Criar
MapConfigService:-
GetConfigAsync(Guid? territoryId, CancellationToken)→ busca config territorial ou global -
CreateOrUpdateConfigAsync(MapConfig, CancellationToken)
-
- Atualizar serviços de mapa:
- Usar
MapConfigao buscar territórios próximos - Aplicar raio de busca configurado
- Usar provedor de mapas configurado
- Usar
- Criar
MapConfigController:-
GET /api/v1/territories/{territoryId}/map-config(Curator) -
PUT /api/v1/territories/{territoryId}/map-config(Curator) -
GET /api/v1/admin/map-config(global, SystemAdmin) -
PUT /api/v1/admin/map-config(global, SystemAdmin)
-
- Interface administrativa (DevPortal):
- Seção para configuração de mapas
- Explicação de raio de busca e limites
- Testes de integração
- Documentação
Arquivos a Criar:
backend/Arah.Domain/Map/MapConfig.csbackend/Arah.Application/Interfaces/Map/IMapConfigRepository.csbackend/Arah.Application/Services/Map/MapConfigService.csbackend/Arah.Api/Controllers/MapConfigController.csbackend/Arah.Infrastructure/Postgres/PostgresMapConfigRepository.csbackend/Arah.Infrastructure/InMemory/InMemoryMapConfigRepository.csbackend/Arah.Tests/Api/MapConfigIntegrationTests.cs
Arquivos a Modificar:
backend/Arah.Application/Services/TerritoryService.cs(ou serviço de mapas equivalente)backend/Arah.Infrastructure/InMemory/InMemoryDataStore.csbackend/Arah.Api/Extensions/ServiceCollectionExtensions.csbackend/Arah.Api/wwwroot/devportal/index.html
Critérios de Sucesso:
- ✅ Configuração de mapas por território
- ✅ Raio de busca configurável
- ✅ Suporte a múltiplos provedores de mapas
- ✅ Interface administrativa disponível
- ✅ Testes passando
- ✅ Documentação atualizada
Referência: Consulte FASE10_CONFIG_FLEXIBILIZACAO_AVALIACAO.md para contexto completo.
✅ Critérios de Sucesso da Fase 4
- ✅ Logs centralizados funcionando
- ✅ Enrichers configurados
- ✅ Structured logging implementado
- ✅ Métricas de performance coletadas
- ✅ Métricas de negócio coletadas
- ✅ Dashboards criados
- ✅ Alertas configurados
- ✅ OpenTelemetry configurado
- ✅ Tracing de HTTP requests funcionando
- ✅ Tracing de database queries funcionando
- ✅ Runbook completo
- ✅ Troubleshooting documentado
🔗 Dependências
- Fase 1: Health Checks completos
- Fase 3: Redis (para métricas de cache)
🖥️ Interface Web de Monitoramento (Expansão Futura)
Status: ⏳ Planejado
A Fase 4 implementou observabilidade completa (logs, métricas, tracing). Uma expansão futura adicionará uma interface web integrada para monitoramento e auxílio à produção.
Funcionalidades Planejadas:
- ✅ Dashboard principal com status geral
- ✅ Visualizador de logs em tempo real
- ✅ Métricas e dashboards interativos
- ✅ Health checks visuais
- ✅ Troubleshooting assistido
Ver documentação completa: LOGS_MONITORAMENTO_ARQUITETURA.md
Estimativa: 4 semanas (160 horas)
Status: ✅ FASE 4 100% COMPLETA
Próxima Fase: Fase 5 - Segurança Avançada
Expansão Futura: Interface Web de Monitoramento (ver LOGS_MONITORAMENTO_ARQUITETURA.md)