You are viewing the documentation for Blueriq 16. Documentation for other versions is available in our documentation directory.

Introduction

In a microservice landscape, you see, in contrast to a traditional monoliths, that each application consists of several separate services. These services have their own life cycle and technology stack, configuration and logging. Specially the latter is difficult for (support) personnel to follow a single user throughout the landscape. This is where log correlation comes in. The idea is that a TraceId is generated when a user creates a request on the landscape (via browser or external service). This TraceId is placed on the HTTP request and follows the activity until a response is generated. Each service which has been touched this manner generates a new SpanId and this is also sent. The result is that request is logged with both the TraceId and SpanId and a 3rd party central logging tool such as Splunk or ELK can correlate these Ids. A user then has a single point for looking at the complete logging of a single user throughout all applications. Another advantage is that performance problems can also be detected in this manner.

TraceID and SpanID

The TraceId and the SpanId are depicted in the following example project setting.

There should always be a TraceId and a SpanId. For those the following holds:

  • Either the external system that calls our Blueriq application sends a TraceId as input and will use this one throughout all systems or in case the external system does not have a TraceId, Blueriq will generate it. The TraceId is unique.
  • Each system generates a new SpanId (which is unique for the TraceId).

Value

The value of this functionality is:

  • to be able to know what happened for a specific user throughout all applications in the entire landscape in order to understand or replay the path taken
  • to be able to see how long some steps took in order to check the performance

Header Configuration

Currently, Blueriq supports the Brave Header syntax for passing trace headers to the next hop and when receiving trace headers. More information can be found at https://github.com/openzipkin/b3-propagation.

Note that Blueriq supports the separate headers, not the unified b3 header.


  • No labels