Depois do logging estruturado, o Day 12/30 do #30DiasJava foi dedicado à saúde operacional. O resultado é um Monitoring Service com métricas padronizadas, dashboards versionados e alertas acionáveis para todo o ecossistema Spring Boot.

📡 What went live

  • Prometheus Operator com scrape configs automáticos para todos os microsserviços (/actuator/prometheus).
  • Dashboards Grafana opinativos (Finance, Reporting, Observability) versionados em monitoring/dashboards/*.json.
  • Alertmanager integrado ao Slack/Email com escalonamento por severidade (warning → time responsável, critical → on-call).
  • SLO Tracker: availability e latency definidos por serviço (ex.: 99.5% availability, P95 < 200 ms).
  • Runbooks linkados diretamente nas anotações de alerta.

💡 Why it matters

  • Visibilidade unificada: engenharia, produto e operações olham para os mesmos painéis.
  • Alertas priorizados (sem ruído) com contexto completo e passos de mitigação.
  • Base para evolução: contratos de métricas permitem comparar serviços sem surpresa.

📚 Deep dive (+ code)


🧩 Implementation Notes

  • Metrics contracts: starter monitoring-service-starter adiciona métricas (http.server.requests, custom.*) com tags padrão (service, tenant, environment).
  • Recording rules em monitoring/prometheus/rules/ calculam SLOs e backlog (queue size, export duration).
  • Dashboard-as-code: JSON + grafana-toolkit/Terraform para importar/exportar versões.
  • Alert templates com labels (team, runbook, severity) e anotação com grafana.com/d/<dashboard-id>.
  • Synthetic probes: monitoring-prober chama endpoints críticos a cada 30 s (health check e fluxos essenciais).

✅ Daily checklist

  • Prometheus scraping ativo (targets UP) e TSDB saudável.
  • Alertmanager silencioso (sem alertas pendentes) ou incidentes resolvidos.
  • Painéis Grafana atualizados com notas de deploy e SLO compliance.

Next episode → Day 13/30 — Feature Flags & Experimentation Platform (em breve)