Observabilidade com Spring Boot Actuator, Micrometer, Prometheus, OpenTelemetry, distributed tracing e health probes
Skill para observabilidade completa em projetos Java 25 + Spring Boot 4 — métricas, logs, traces, e health checks.
examples/ — Código de Exemplo| Arquivo | Conteúdo |
|---|---|
ObservabilityExamples.java | HealthIndicator, ReactiveHealthIndicator, métricas customizadas, @Observed |
observability-config.yml | application.yml completo com Actuator, Micrometer, tracing |
alerting-rules.yml | Prometheus scrape config + Alertmanager rules |
logback-spring.xml | Logging JSON (prod) e texto (local) com trace ID |
scripts/ — Configurações de Build| Arquivo | Conteúdo |
|---|---|
maven-observability.xml| Dependências Maven: Actuator, Micrometer, OpenTelemetry, Logback JSON |
Ver scripts/maven-observability.xml para lista completa de dependências.
health, info, metrics, prometheus, loggers, threaddump, heapdump.management.endpoint.health.probes.enabled=true.liveness (livenessState), readiness (readinessState, db, redis, kafka).application, environment, region.Ver examples/observability-config.yml para configuração completa.
HealthIndicator — verificação síncrona (banco, cache).ReactiveHealthIndicator — verificação assíncrona (APIs externas via WebClient).Ver examples/ObservabilityExamples.java para implementação.
Counter.builder("orders.created").tag("type", "online").register(registry) — contadores.Timer.builder("orders.processing.time").publishPercentiles(0.5, 0.95, 0.99) — latência.Gauge.builder("orders.queue.size", queue, Queue::size) — valores observados.Ver examples/ObservabilityExamples.java para implementação.
!local profile); texto legível em desenvolvimento (local).%X{traceId}).StructuredArguments.kv("orderId", id) para campos adicionais.Ver examples/logback-spring.xml para configuração.
@Observed(name = "order.service") — instrumenta métodos automaticamente.ObservedAspect bean habilita a anotação.ObservationFilter adiciona dados de contexto (user.id, tenant).traceparent (W3C).Ver examples/ObservabilityExamples.java para implementação.
| Endpoint | Descrição | Uso |
|---|---|---|
/actuator/health | Health geral | Load balancers, K8s |
/actuator/health/liveness | Liveness probe | Kubernetes |
/actuator/health/readiness | Readiness probe | Kubernetes |
/actuator/health/startup | Startup probe | Kubernetes (slow start) |
/actuator/metrics | Lista de métricas | Debug |
/actuator/metrics/{name} | Métrica específica | Debug |
/actuator/prometheus | Métricas no formato Prometheus | Scraping |
/actuator/info | Info build/git | Dashboards |
/actuator/loggers | Níveis de log dinâmicos | Operações |
/actuator/threaddump | Thread dump | Debugging |
/actuator/heapdump | Heap dump | Memory leaks |
/actuator/prometheus a cada 15s.Ver examples/alerting-rules.yml para configuração completa de Prometheus + Alertmanager.
Observation para tracing (não @Span diretamente)application, environment, region)env, configprops) sem autenticaçãomanagement.server.port diferente para isolamento (opcional)traceparent header (W3C)