This extension provides functionality to trace command, event and query messages flowing through an Axon application by providing a specific implementation of the
MessageHandlerInterceptor. The Open Tracing standard is used to provide tracing capabilities, which thus allows usage of several Open Tracing implementations.
With this instrumentation, we can chain synchronous and asynchronous commands and queries, all belonging to the same parent span. A request can be visualized and analysed across Axon clients, command handlers, query handlers and event handlers, when running together or decomposed and deployed as separate parts (distributed).
The first dependency is Spring Boot starter for Axon Tracing extension, which is the quickest start in to an extension configuration.
The second dependency is Jaeger implementation for OpenTracing.
There are other supported tracers that can be used: LightStep, Instana, Apache SkyWalking, Datadog, Wavefront by VMware, Elastic APM and many more.
The extension can be disabled setting the property
true). This will give you the possibility to turn it off when needed (e.g.: for a certain environment).
Furthermore there is a more fine-grained configuration option of the tracing span tags on commands, events and queries. You can customize span tags easily, mixing and matching between available tag
payload. Take into account that some of the tags make sense on a certain span type, but not on another, and some of them have an hidden cost on network (such as payload). Use them wisely!
axon.extension.tracing.span.commandTags=messageId, messageType, payloadType, messageNameaxon.extension.tracing.span.eventTags=messageId, aggregateId, messageType, payloadTypeaxon.extension.tracing.span.queryTags=messageId, messageType, payloadType, messageName
Above an example of the default value. Available tags field are listed in MessageTag.java class.