Skip to content

Implement OpenTelemetry for Java service #453

@davideme

Description

@davideme

Overview

Implement the OpenTelemetry integration for the Java (Spring Boot + JPA) service as specified in src/java/adr/010-opentelemetry.md.

Parent issue: #14

Tasks

  • Add OTel Java Agent JAR to the build (download via Maven or bundle in repo)
  • Configure JVM startup flag: -javaagent:opentelemetry-javaagent.jar
  • Add opentelemetry-logback-appender-1.0 Maven dependency and configure Logback appender
  • Add opentelemetry-runtime-telemetry-java17 for JFR-based JVM runtime metrics
  • Configure Micrometer OTel bridge for Spring Boot Actuator metrics export
  • Update application.yml / env vars for OTEL_SERVICE_NAME=lamp-control-api-java, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_LOGS_EXPORTER=otlp
  • Verify zero-code instrumentation covers: Spring MVC (HTTP), RestTemplate/WebClient (outbound), Hibernate/JDBC (database)
  • Verify metrics baseline: http.server.request.duration, http.server.active_requests, JVM runtime metrics
  • Set resource attributes: service.name, service.version, deployment.environment
  • Ensure W3C TraceContext + Baggage propagation is enabled (default in agent)
  • Add/update tests to verify instrumentation wires up correctly

Instrumentation summary

Signal Mechanism Type
Traces – Inbound HTTP OTel Java Agent (Spring MVC) Zero-code
Traces – Outbound HTTP OTel Java Agent (RestTemplate/WebClient) Zero-code
Traces – Database OTel Java Agent (Hibernate/JDBC) Zero-code
Metrics – HTTP server OTel Java Agent + Micrometer bridge Zero-code
Metrics – JVM runtime opentelemetry-runtime-telemetry-java17 Zero-code
Logs opentelemetry-logback-appender-1.0 Config only

Acceptance criteria

  • Agent is a no-op when OTEL_EXPORTER_OTLP_ENDPOINT is not set
  • All three pillars (traces, metrics, logs) emit data when collector is configured
  • Existing tests continue to pass

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions