Spring Boot Observability
Priority: P0
Implementation Workflow
- Add tracing and metrics dependencies to
pom.xml - Configure
application.yamlfor tracing, actuator, and log correlation - Add structured logging with MDC context
- Verify with
curl localhost:8080/actuator/prometheusand check trace IDs in logs
Enable Distributed Tracing
- Correlation IDs: Enable trace/span ID injection.
- Propagation: Propagate context across threads (
@Async) and clients. - OpenTelemetry: Use OTel bridge (
micrometer-tracing-bridge-otel).
See implementation examples for application.yaml tracing configuration and actuator exposure.
Configure Structured Logging
- Format: Use JSON logging (
logstash-logback-encoder) in production. - MDC: Use MDC for contextual info (userId, tenantId). Always clear MDC in a finally block.
- Output: Log to stdout only. Let container handle shipping.
See implementation examples for structured logging with MDC context and Logstash encoder.
Secure Actuator Endpoints
- Security: Secure
/actuator/**with Admin role. - Probes: Enable K8s Liveness/Readiness probes.
- Verify: Run
curl localhost:8080/actuator/prometheusto confirm metrics are exposed.
Anti-Patterns
- No System.out: Use @Slf4j for all structured logging.
- No open Actuator: Secure /actuator/** with Admin role.
- No DIY tracing: Use Micrometer with OTel bridge.