Questions tagged [distributed-tracing]

Distributed Tracing aims to provide better observability into distributed systems and microservices for purposes of performance monitoring and troubleshooting issues.

Distributed Tracing

Distributed Tracing aims to provide better observability into distributed systems and microservices for purposes of performance monitoring and troubleshooting issues.

Modern Internet services are often implemented as complex, large-scale distributed systems. These applications are constructed from collections of software modules that may be developed by different teams, perhaps in different programming languages, and could span many thousands of machines across multiple physical facilities. Tools that aid in understanding system behavior and reasoning about performance issues are invaluable in such an environment.

Source: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure

How it works in a nutshell

Distributed Tracing works by collecting the various entry and exit points and useful intermediate data and metrics done by a request until the final response is served to the requesting end. Some Distributed Tracing systems collect this information fully automatic while some other require manual instrumentation of code.

When entering a system, the request is usually assigned a unique Trace ID. This ID is then propagated to any participating systems. Information gathered this way is sent to some sort of backend collecting the data. The collector then aggregates the data via the Trace ID, thus showing the full request as it passed through the distributed system.

Metrics usually included are request time, latency, errors, status codes, etc. but not limited to this.

Open Source implementations:

Several Open Source implementations for Distributed Tracing exist:

  • http://opencensus.io

    A single distribution of libraries for metrics and distributed tracing with minimal overhead that allows you to export data to multiple backends.

  • http://opentracing.io

    Vendor-neutral APIs and instrumentation for distributed tracing

  • http://zipkin.io

    Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data.

  • http://www.jaegertracing.io

    Jaeger, inspired by Dapper and OpenZipkin, is a distributed tracing system released as open source by Uber Technologies. It is used for monitoring and troubleshooting microservices-based distributed systems

There is also a W3 working group aiming to standardize context propagation across various Distributed Tracing systems:

Because Distributed Tracing is crucial for application performance monitoring, most APM vendors adopted it in one way or another. Notable APM vendors offering Distributed Tracing are AppDynamics, DynaTrace, Instana, Lightstep or New Relic.

219 questions
2
votes
1 answer

How to connect Datadog Rum to traces

I just connected Datadog RUM on my React SPA application, this application is not connected to a backend but uses graphql apis from another application which has Datadog tracing agent set on it datadogRum.init({ applicationId: 'xxxxxxxxx', …
Noriode Raphael
  • 88
  • 1
  • 11
2
votes
1 answer

APM Tracing with Datadog in Go

I have built a demo REST API in Go with MongoDB as the datastore, with Gin as the HTTP framework. I have followed all of the instructions on the Datadog website, however, am getting traces with little to no information. All that is traced is…
NG235
  • 1,091
  • 12
  • 33
2
votes
0 answers

How can I integrate my Custom ILogger to OpenTelemetry using IHostBuilder in .NET Core

I have created my custom ILogger and it is working fine with console application. Now I have added reference to OpenTelemetry in my project and I found that Log messages that are displayed on console are not logged in my custom ILogger. How can I…
Hemendr
  • 673
  • 6
  • 12
2
votes
1 answer

Using Opentelemetry to write logs for Python

We are using Python and we want to use Opentelemetry for logs. I see that Logs for Python are not supported yet(https://opentelemetry.io/docs/instrumentation/python/) and for C++/.NET it is in beta/experimental. My question is will it make any sense…
2
votes
1 answer

OpenTelemetry: Difference between traceidratio & parentbased_traceidratio

According to the document "traceidratio": TraceIdRatioBased "parentbased_traceidratio": ParentBased(root=TraceIdRatioBased) What I understood: traceidratio will do sampling irrespective of whether sampling is done at source/parent. (Meaning: a…
Vipin Menon
  • 2,892
  • 4
  • 20
  • 35
2
votes
0 answers

Sleuth basic tracing example not working in java

I tried to implement tracing using sleuth-otel. For that, I followed the steps mentioned in the official sleuth-otel documentation. I created a sample project to implement this. but that did't work. I followed this link. This is my pom.xml
2
votes
2 answers

Usage example of kafka zipkin interceptors

So, we are using kafka queues internally for some microservices' communication, also zipkin for distributed tracing. Would you suggest how to bring in kafka traces in zipkin server for debugability. I came across the brave-kafka-interceptor, but…
v78
  • 2,803
  • 21
  • 44
2
votes
4 answers

AWS X-RAY [Error] Sending segment batch failed with: NoCredentialProviders: no valid providers in chain. Deprecated

I'm using X-Ray Daemon with Fargate. Unfortunately in the logs of the daemon I see errors like: [Error] Sending segment batch failed with: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging…
2
votes
3 answers

How to Get/Set Traceparent header in APIM inbound Policy if client dose not sent?

we want to correlate requests in Azure APIM and Application Insight. For the API we have a policy that uses send-request in inbound and outbound section. We are using W3C distributed tracing Azure , specification Now if the client dose not send the…
2
votes
0 answers

Traces for request not aggregated when using cloud trace with micronaut

I'm trying to setup distributed tracing for my micronaut service with GCP cloud trace. Service is written in kotlin with coroutines and micronaut version is 1.3.7. When I make a request to my application I can see the traces in the gcp-console. But…
2
votes
3 answers

Propagating W3C trace context over MassTransit publisher/consumer

'm trying to support propagating the W3C trace context traceId and spanId properties from http calls -> publisher -> consumer -> http call within MassTransit (just so they show up in the logs/seq for now, but we're using Dynatrace), but am I…
Wiebe Tijsma
  • 10,173
  • 5
  • 52
  • 68
2
votes
0 answers

Traces not sampled with Istio and Sleuth

I am using Spring Boot 2 Microservices with Spring Cloud Sleuth with the Dependency Management and Spring Cloud Version Greenwich.SR2. My service is running in an Istio service mesh. Sample policy of istio is set to 100 (pilot.traceSampling:…
2
votes
1 answer

Triggering a new Sleuth Tracer for Completable futures

I am trying to implement Slueth for distributed tracing for spring boot microservices which communicates with each other over a messaging channel. One of these microservices is a scheduler that picks up new consumers created for a day. It then runs…
2
votes
1 answer

Spring cloud sleuth ExtraFieldPropagation fail in Spring cloud Gateway Filter

We are having three modules Gateway using spring-cloud-gateway, Service1 and Service2. Gateway call service1 and service1 calls service2. Service1 and Service2 are using spring web flux Gateway have 3 filters. global filter, Pre filter and post…
2
votes
1 answer

SpanContext not found in Extract carrier in microservice

I am trying to implement a Go-based microservice system. I have two service and I try to Inject and Extract span data. In my first service, I have: func (apitracer apiTracer) validatemail(res http.ResponseWriter, req *http.Request) { …
Sachith Muhandiram
  • 2,819
  • 10
  • 45
  • 94
1 2
3
14 15