Skip to content

AxonFramework/opentelemetry-samples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenTelemetry Axon Framework demo

This demo repository contains an application with the configuration setups necessary to deal with various OpenTelemetry providers.

Demo setup

The demo application registers a participant every 10 seconds and will use a Saga to guarantee the uniqueness of the email. It will go wrong on purpose sometimes, to give variance in traces.

The events produced are put into a projection, which emits query updates for active subscription queries. All types of queries are included for tracing: Direct queries, Scatter-Gather queries, Streaming queries and Subscription queries are all done every 5 seconds.

How to run

The project contains various run configuration for IntelliJ. You can, of course, also run them manually.

The demo uses Axon Server. To run an Axon server locally, start it with Docker:

docker run -d --name axonserver-tracing-demo -p 8024:8024 -p 8124:8124 axoniq/axonserver

Agent Local Jaeger (Nested) Demo

This configuration runs this demo with a local Jaeger all-in-one instance. There is no Java configuration required because the OpenTelemetry auto-instrumentation does everything out of the box. You only need to run Jaeger locally:

docker run --name jaeger \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  jaegertracing/all-in-one:1.35

The demo works by setting the environment variables before running the core module:

wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.23.0/opentelemetry-javaagent.jar
mvn clean install
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317
export OTEL_SERVICE_NAME=TracingDemo
export OTEL_TRACES_EXPORTER=otlp
java -javaagent:opentelemetry-javaagent-1.23.jar -Dio.opentelemetry.context.enableStrictContext=true -Dspring.profiles.active=nested -jar core/target/core-0.0.1-SNAPSHOT.jar

Now you can access Jaeger on http://localhost:16686/

OpenTelemetry tracing in Jaeger

Note that, due to the OpenTelemetry auto-instrumentation, Spring Boot and datasources are instrumented and visible as well.

Google Trace demo

Google Trace does not work well with the auto-instrumentation agent. Please do not use the agent when using Google Trace. Instead, use configuration like shown in the google-trace module.

To run the demo manually, run:

mvn clean install
java -javaagent:opentelemetry-javaagent-1.23.jar -Dio.opentelemetry.context.enableStrictContext=true -Dspring.profiles.active=nested -jar google-trace/target/core-0.0.1-SNAPSHOT.jar

You need the Google cloud SDK locally with a project configured. Now you can access the tracing in the Google cloud console:

OpenTelemetry tracing in Jaeger

Other providers

We want to include any provider in here that is not possible to use using auto-instrumentation only, such as Google Trace. If you happen to stumble on such a provider, please let us know (perhaps with the correct configuration to make the demo work with).

About

Samples for using OpenTelemetry with Axon Framework 4.6+

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages