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
0
votes
0 answers

How to do distributed tracing with newrelic for spring boot applications

We can enable distributed tracing on newrelic.yml file as below distributed_tracing: enabled: true But the interservice tracing is not available, Do we need to do any changes on spring boot application side.
0
votes
0 answers

Custom CorrelationId Spring cloud sleuth Finchley.RELEASE

I am currently stuck with one use case in spring-cloud-sleuth. I am using Finchley.Release spring cloud in my pom and Spring boot 2.0.3.RELEASEץ I implemented my own CustomTraceContext which extends CurrentTraceContext and have added a custom…
0
votes
1 answer

Does Elastic APM support Spring Cloud Stream

I am very new to Elastic APM and not sure how it can support different frameworks. I can see that from the documentation APM supports Spring Boot. I have tested a Spring Boot application with the APM and it looks promising. I was wondering if APM…
Ali
  • 1,759
  • 2
  • 32
  • 69
0
votes
0 answers

zipkin distributed tracing demo

I am new to distributed tracing and trying to use the example explained in the video https://www.youtube.com/watch?v=CFLZJSwbYI0 In short this has following Zipkin server - for this I am using jar file provided…
Arvind Kumar
  • 459
  • 5
  • 21
0
votes
1 answer

How to setup Kamon to trace arbitrary function calls

Using Kamon in a scala play 2.6 project it seems that calls into play.core.server.AkkaHttpServer are traced automatically via instrumentation added via aspect j. Example A route /blogposts/ is traced. But further calls inside e.g…
Th 00 mÄ s
  • 3,776
  • 1
  • 27
  • 46
0
votes
1 answer

Traces not getting sampled in jaeger tracing

I'm new to using Jaeger tracing system and have been trying to implement it for a flask based microservices architecture. Below is my jaeger client config implemented in python: config = Config( config = { 'sampler': { …
NightOwl19
  • 419
  • 5
  • 24
-1
votes
1 answer

Tracing with micronaut not resumed when there is a backend outage for a while

I am using micronaut for an application and exporting traces to jaeger backend. The traces export is working only if jaeger is available when application comesup. Say if jaeger is brought up after app, or say if jaeger gets restarted, the traces are…
user3602058
  • 219
  • 4
  • 10
-1
votes
1 answer

Tracing of spring boot microservice application

what are the best practices in tracing of spring boot 2 microservice applications? I found some 2 years old tutorials where tracing server was as another spring boot application with following dependencies:
-2
votes
1 answer

start a child span from an existing parent span in Go

I tried using this answer to create a child span from an existing span but it didn't work for me sadly. I have a parent span starting whenever I make my gRPC call, the code snippet goes like this. type spanctxkey struct{} // pushing span in context…
Rajat Singh
  • 653
  • 6
  • 15
  • 29
1 2 3
14
15