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
1
vote
1 answer

Can jaegar collector receive spans and traces from otel collector which are coming in via otlp protocol?

I have an application that is generating spans and traces and sending them to otel collector using otlp protocol. Now if I configure jaeger as one of the exporters in otel collector config, will the jaeger collector be able to receive and display…
Aman Chourasiya
  • 1,078
  • 1
  • 10
  • 23
1
vote
0 answers

How to combine multiple OpenTelemetry traces into one original trace?

Below is a rough sketch of how our SpringBoot microservices communicate with a Remote Blockchain app, which triggers events based on the requests send to it. The blockchain can generate multiple events for a single request, and this triggers…
Somjit
  • 2,503
  • 5
  • 33
  • 60
1
vote
1 answer

Make Zipkin (or any open-tracing framework) work with existing "trace id"

A bit of background: We have around 10 Spring boot microservices, which communicate with each other via kafka. The logs of each microservice are sent to Kibana, and in case of any errors, we have to sift through Kibana logs. The good thing is: at…
Somjit
  • 2,503
  • 5
  • 33
  • 60
1
vote
0 answers

How log files are collected from different microservices in logstash or fluentd?

I have 10 microservices running and stored separate log files for each microservice. but when i am configuring the logstash or fluentd config file for tracing i have to give one specific log file name but i want logstash or fluentd has to take all…
1
vote
1 answer

how to use opentelmetry with multiple microservices (python)

in a single application i can easily create (nested) spans but i am trying to trace http requests throughout multiple services and nothing i try with context propagation is working. so maybe my setup is wrong. can someone please explain the exact…
hashguard
  • 403
  • 4
  • 22
1
vote
2 answers

Opentelemetry java Automatic Instrumentation with zipkin exporter option is using OtlpGrpcSpanExporter

I have a simple spring boot hello world application. Trying to send data to the Zipkin collector. But as per logs, it's trying to use OtlpGrpcSpanExporter. My application exposes a simple post rest API. Following Opentelemetry docs…
1
vote
1 answer

How can we specify the number of traces in opentelemetry

I am using opentelemetry to instrument the nest js application. Suppose the number of requests to be made is large in number. Then how can we specify the number of traces to be collected.
1
vote
1 answer

ASP.NET Core Web API and Jaeger - Can I change the top level Span name?

I am doing some prototyping of Jaeger Tracing for an ASP.NET Core Web API and I am able to get it working using the All in One instance of Jaeger described in the Getting Started documentation and the following code in my Startup.ConfigureServices()…
1
vote
0 answers

spring sleuth @NewSpan annotation at the jpa repository level

Problem: I could not enable my jpa repository interface with this annotation. It complains '@NewSpan' not applicable to type. I guess, it just does not work with interfaces and needs the concrete implementation which is not good for dynamically…
v78
  • 2,803
  • 21
  • 44
1
vote
1 answer

What are keys differences between OpenTracing and Zipkin?

I am looking into distribution tracing tools. Found there two very popular. OpenTracing - https://opentracing.io/ Zipkin - https://zipkin.io/ What are key differences between them ? Which one would you recommend ? Will you recommend other open…
Traycho Ivanov
  • 2,887
  • 14
  • 24
1
vote
1 answer

Child span in Go GRPC opentracing

I am working on adding opentracing in our micro services, using Jaeger. I have two GRPC server and one REST server. The default opentracing with perfectly fine with both GRPC server and all the rest-grpc request are tracked under one parent span.…
Ashish
  • 277
  • 3
  • 13
1
vote
1 answer

Distributed tracing with Elastic APM on .NET Core, non-HTTP

I am interested in using Elastic APM within an ASP.NET Core to instrument traces of a set of services which communicate over a mix of protocols (HTTP, SQS, SNS). Despite reviewing the documentation, I am not clear how I can use the Elastic APM…
Nathan Taylor
  • 24,423
  • 19
  • 99
  • 156
1
vote
2 answers

Checking correctness of traceparent http header in Azure API Management

Is there a way to check correctness of traceparent http header using Azure API Management policies before is forwarded to backend service?
1
vote
1 answer

POST data faild using http.NewRequest

I am trying to pass data from one golang service to another using http.NewRequest(). To do it I used following code: httpClient := http.Client{} userserviceUrl := "http://user:7071/checkemail" form := url.Values{} …
Sachith Muhandiram
  • 2,819
  • 10
  • 45
  • 94
1
vote
1 answer

What are the advatages of the jaeger tracing with istio and without istio?

What are the advatages of the jaeger tracing with istio and without istio? For example with istio it will reduce the latency for collecting the more traces
Keshav
  • 17
  • 7