Java Monitoring
Java and JVM monitoring
with one agent flag.
Attach the OpenTelemetry Java agent and Spring Boot controllers, JDBC queries, Kafka producers and outbound HTTP calls are traced from the first request. JVM memory, garbage collection and thread metrics come with it.
What you see
Traces, metrics and logs from Java
The OpenTelemetry Java agent loads with -javaagent and instruments bytecode at startup.
Distributed traces
Controllers, queries, messaging and HTTP clients as spans, without touching your code.
JVM metrics
Heap and non-heap memory, garbage collection, threads and class loading.
Correlated logs
Log4j and Logback records are enriched with trace and span IDs.
Frameworks and libraries
Each of these has official OpenTelemetry instrumentation. aiAxonIQ receives it over OTLP, so anything the OpenTelemetry project adds for Java works here too.
- Spring Boot
- Spring MVC
- Spring WebFlux
- Jakarta Servlet
- JDBC
- Hibernate
- Kafka clients
- gRPC
- OkHttp
- Apache HttpClient
- Redis (Jedis, Lettuce)
- Log4j / Logback
Set up
Send Java telemetry in three steps
The full guide, including sampling and resource attributes, is in the documentation.
1Download the agent
curl -L -O https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar2Configure
export OTEL_EXPORTER_OTLP_ENDPOINT="https://app.aiaxoniq.com/otlp" export OTEL_EXPORTER_OTLP_HEADERS="x-license-key=YOUR_LICENSE_KEY" export OTEL_SERVICE_NAME="my-service"3Run
java -javaagent:./opentelemetry-javaagent.jar -jar your-app.jar
How the data flows
- 1. Instrument. The OpenTelemetry SDK for Java records spans, metrics and logs in your process.
- 2. Export. It sends them over OTLP, straight to aiAxonIQ or through an OpenTelemetry Collector you already run.
- 3. Explore. Traces, metrics and logs land in one store, so a slow request opens onto its queries and its log lines.
Because the wire format is OTLP, the same instrumentation works with any OpenTelemetry backend. Moving to aiAxonIQ, or away from it, is an endpoint change.
Java questions
- Does it work with Kotlin and Scala?
- Yes. The agent instruments JVM bytecode, so services written in Kotlin, Scala or any other JVM language are covered by the same flag.
- Can I turn off an instrumentation I do not want?
- Yes. Each instrumentation has a switch, OTEL_INSTRUMENTATION_<NAME>_ENABLED=false, so you can drop a noisy library without removing the agent.