𝗠𝗼𝗻𝗶𝘁𝗼𝗿𝗮𝗺𝗲𝗻𝘁𝗼 𝗻𝗼 𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁
Uma aplicação em produção deve fazer mais do que apenas rodar. Ela deve ser observável e fácil de corrigir quando falha. Você precisa de health checks, métricas, logs e procedimentos claros para lidar com incidentes.
O Spring Boot utiliza o Actuator para fornecer esses recursos. O Actuator oferece endpoints como health, metrics e info. Você pode expô-los via HTTP ou JMX.
Principais áreas para monitorar:
• Disponibilidade: Verifique uptime, readiness e liveness. • Performance: Acompanhe tempos de resposta, latência e throughput. • Erros: Fique atento a erros HTTP 4xx/5xx e mensagens que falharam. • JVM: Monitore heap, memória, CPU e threads. • Banco de dados: Acompanhe connection pools e queries lentas. • Kafka: Monitore o consumer lag e as taxas de retry.
Coleta de Métricas
O Spring Boot utiliza o Micrometer para coletar métricas. Você pode usar o registro do Prometheus para expor essas métricas. Uma configuração comum envolve:
Spring Boot App → Prometheus → Grafana
Isso permite que você visualize os dados da aplicação em dashboards.
Melhores Práticas de Logging
Logs ajudam você a entender o que aconteceu durante uma falha. Use logging JSON estruturado em produção para tornar os logs legíveis por máquinas.
Faça:
- Registre IDs de negócio como orderId ou customerId.
- Use correlation IDs para vincular logs de uma única requisição.
- Inclua stack traces para exceções.
- Use logs estruturados.
Não faça:
- Registre senhas, tokens ou dados pessoais.
- Registre dados demais dentro de loops.
- Use System.out.println.
- Esconda erros com blocos catch vazios.
Estabilidade Operacional
Suporte operacional significa manter o serviço estável após o deploy. Você deve focar em:
- Suporte a incidentes para investigar problemas.
- Dashboards e alertas para detectar problemas precocemente.
- Runbooks para guiar os passos de recuperação.
- Estratégias de rollback para releases que falharem.
Um serviço Spring Boot robusto é fácil de monitorar, fácil de depurar e fácil de recuperar.
Fonte: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220