6.6 KiB
Implementação de Monitoramento e Alertas
Visão Geral
Este documento descreve a implementação de um sistema completo de monitoramento e alertas para o Portal Jurunense API, baseado em Prometheus, Grafana e AlertManager. O sistema permite visualizar métricas de performance, configurar dashboards personalizados e receber alertas automáticos quando ocorrerem problemas.
Componentes Implementados
1. Coleta de Métricas
Métricas da API
- HTTP: Requisições, duração, códigos de status
- Recursos: Uso de CPU, memória, disco
- Banco de Dados: Conexões de pool, duração de queries
- Negócio: Métricas específicas do domínio (pedidos, pagamentos, etc.)
Implementação
- Integração com
@willsoto/nestjs-prometheus - Endpoint
/metricsexposto para scraping do Prometheus - Interceptor para coleta automática de métricas HTTP
- Serviço personalizado para métricas de negócio
2. Dashboards Grafana
Dashboard Principal
Painéis Incluídos:
- Visão geral da saúde da aplicação
- Taxa de requisições por segundo
- Latência das requisições (percentis)
- Uso de recursos (CPU, memória, disco)
- Taxa de erros HTTP
Dashboard de Banco de Dados
: Para alertas críticos fora do horário comercial
4. Arquitetura de Monitoramento
┌─────────────┐ ┌────────────┐ ┌─────────────┐
│ API │ │ Prometheus │ │ Grafana │
│ (/metrics) │───▶│ (Coleta) │───▶│ (Dashboards)│
└─────────────┘ └────────────┘ └─────────────┘
│ ▲
▼ │
┌────────────┐ ┌─────────────┐
│AlertManager│───▶│ Notificações│
│ (Alertas) │ │ (Email/Slack)│
└────────────┘ └─────────────┘
Configuração e Uso
Iniciando o Sistema de Monitoramento
# Iniciar todos os serviços de monitoramento
docker-compose -f docker-compose.monitoring.yml up -d
# Verificar status dos serviços
docker-compose -f docker-compose.monitoring.yml ps
# Visualizar logs
docker-compose -f docker-compose.monitoring.yml logs -f
Acessando as Interfaces
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin)
- AlertManager: http://localhost:9093
Customizando Alertas
- Edite o arquivo
monitoring/prometheus/rules/portaljuru_alerts.yml - Adicione ou modifique regras de alerta usando a sintaxe PromQL
- Recarregue a configuração:
curl -X POST http://localhost:9090/-/reload
Customizando Dashboards
- Acesse o Grafana: http://localhost:3000
- Faça login com as credenciais padrão (admin/admin)
- Navegue até Dashboards > Browse
- Clone um dashboard existente ou crie um novo
- Use o editor visual para adicionar painéis e consultas
Integração com APM (Application Performance Monitoring)
Além do monitoramento baseado em métricas, implementamos integração com ferramentas de APM para rastreamento distribuído e profiling:
Jaeger para Rastreamento Distribuído
- Endpoint: http://localhost:16686
- Features:
- Visualização de traces completos de requisições
- Análise de gargalos em calls entre serviços
- Rastreamento de erros e exceções
Configuração de Rastreamento Distribuído
O código abaixo foi adicionado para habilitar o rastreamento:
// Trecho simplificado. O código completo está no módulo de saúde.
import { TracingModule } from './tracing.module';
@Module({
imports: [
TracingModule.forRoot({
serviceName: 'portaljuru-api',
samplingRate: 0.3,
}),
// ...
],
})
export class AppModule {}
Monitoramento Proativo
Implementamos monitoramento proativo através de:
- Health Checks Periódicos: Verificações automáticas a cada 5 minutos
- Alertas Preditivos: Baseados em tendências anômalas de métricas
- Relatórios Diários: Resumo automático enviado diariamente por email
- Página de Status: Disponível em
/health/statuspara usuários finais
Boas Práticas
- Métricas Relevantes: Foco em métricas que refletem a experiência do usuário
- Alertas Acionáveis: Somente alertar em situações que precisam de ação humana
- Redução de Ruído: Agrupamento e correlação de alertas para evitar fadiga
- Documentation as Code: Dashboards e regras de alerta versionadas no git
- Runbooks: Documentação de resposta para cada tipo de alerta
Próximos Passos
- Expandir Métricas de Negócio: Adicionar KPIs específicos para cada domínio
- Machine Learning: Implementar detecção de anomalias baseada em ML
- Logs Centralizados: Integrar com ELK Stack para correlação logs-métricas
- SLOs e SLIs: Definir e monitorar objetivos de nível de serviço
- Automação de Remediação: Scripts para resposta automática a problemas comuns
Conclusão
O sistema de monitoramento implementado proporciona visibilidade completa sobre a saúde e performance do Portal Jurunense API. Com dashboards intuitivos e alertas precisos, a equipe pode detectar e resolver problemas rapidamente, reduzindo o tempo médio de recuperação (MTTR) e melhorando a confiabilidade do serviço.