When a user performs an operation in a web application, there might be multiple backend services operating in concert to support that functionality. Often times in microservices, it can be hard to identify the exact source of a failure.
Distributed Tracing is monitoring method that helps with debugging and tracing such issues. Distributed Tracing allows visualizing network requests as they flow through your distributed systems or microservices. This helps identify request latencies, performance bottlenecks, trace logs as the request propagates through your application stack.
We support distributed tracing for Browser Tests and API Tests. When enabled, we automatically set OpenTelemetry Traceparent HTTP header for the requests sent during the test.
All requests sent during the execution of your browser test scenario will include traceparent header with a unique trace-id for the entire test. This enables you to trace all the requests that were executed part of the test.
Refer Enabling Tracing to enable tracing for your Browser Tests.
The API request sent for executing your test will include a unique traceparent header that allows tracing the request in your application stack. Ensure Set Trace ID option is selected for enabling distributed tracing for your API Monitor.
We currently only support setting traceparent header as defined in W3C Trace Context specification. The ability to trace a transaction through your entire application stack depends on the libraries/frameworks/tools you use and their support for propagating the Trace Context.
Tracing a Request
If distributed tracing is enabled, the generated Trace ID will be shown in the results section of the test. By using this Trace ID, you can look up the entire set to requests executed part of the test in your distributed tracing tool.
Here is an example Trace ID generated for a Browser Test:
By using the Trace ID, the requests, their latencies, performance, associated logs and other data can be traced. The screenshot below is a view from Google's Cloud Trace product (the tool we use) showing the Trace view for the executed test.
Depending on the distributed tracing tool you use, there can be associated costs for enabling distributed tracing while executing your tests. Please understand cost implications and the volume of your tests before enabling distributed tracing. For this reason, we consciously chose to not enable distributed tracing by default for the tests.