cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

SAGA pattern observability

AndriiA
Visitor

Hello all,

One of our projects implements the SAGA pattern (choreography) where 3rd-party services in the service chain ignore or remove tracing headers, leading to the loss of a unified trace and the fragmentation of the trace into separate parts.

AndriiA_0-1725009991917.png

Instead, we would like to have the ability to track the entire lifecycle of such a transaction skipping 3rd parties where it possible. Therefore, we are considering using identifiers from the payload, which are available at any point in the transaction, as a binding component. We have considered two main options:

  1. User sessions: Each of the services available to us supports the same user session, using the payload ID as the session identifier.
  2. Distributed traces: Each of the services available to us generates a traceId based on a hash function of the payload ID if there is no tracing header in the incoming request.

However, all our experiments have been unsuccessful—OpenKits does not seem to support distributed sessions, and OneAgent does not allow generating traceId manually. If we disable OneAgent and send tracing information using OpenTelemetry, Dynatrace can display it as a unified trace, but it is unable to build any graphs due to the lack of metrics, making the analysis of such traces impossible.

Perhaps someone has ideas on how this can still be achieved, as Dynatrace is a powerful and flexible tool, and I hope I might be missing something?

 

 

0 REPLIES 0

Featured Posts