Getting Started
Hello World examples
Both of these examples assume that Jaeger is running locally via Docker:
docker run -d -p 5775:5775/udp -p 16686:16686 jaegertracing/all-in-one:latest
These can be adapted to use other OpenTracing-compatible Tracer easily by adjusting the initialization code to match the particular implementation.
Java
Add the Jaeger libraries to your dependencies -
io.jaegertracing jaeger-client 0.32.0
import io.jaegertracing.Configuration;import io.jaegertracing.Configuration.ReporterConfiguration;import io.jaegertracing.Configuration.SamplerConfiguration;import io.jaegertracing.internal.JaegerTracer;import io.jaegertracing.internal.samplers.ConstSampler;import io.opentracing.Span;import io.opentracing.util.GlobalTracer;...SamplerConfiguration samplerConfig = SamplerConfiguration.fromEnv() .withType(ConstSampler.TYPE) .withParam(1);ReporterConfiguration reporterConfig = ReporterConfiguration.fromEnv() .withLogSpans(true);Configuration config = new Configuration("helloWorld") .withSampler(samplerConfig) .withReporter(reporterConfig);GlobalTracer.register(config.getTracer());...Span parent = GlobalTracer.get().buildSpan("hello").start();try (Scope scope = GlobalTracer.get().scopeManager() .activate(parent)) { Span child = GlobalTracer.get().buildSpan("world") .asChildOf(parent).start(); try (Scope scope = GlobalTracer.get().scopeManager() .activate(child)) { }}
Go
import ( "github.com/opentracing/opentracing-go" "github.com/uber/jaeger-client-go" "github.com/uber/jaeger-client-go/config")...func main() { ... cfg := config.Configuration{ Sampler: &config.SamplerConfig{ Type: "const", Param: 1, }, Reporter: &config.ReporterConfig{ LogSpans: true, BufferFlushInterval: 1 * time.Second, }, } tracer, closer, err := cfg.New( "your_service_name", config.Logger(jaeger.StdLogger), ) opentracing.SetGlobalTracer(tracer) defer closer.Close() someFunction() ...}...func someFunction() { parent := opentracing.GlobalTracer().StartSpan("hello") defer parent.Finish() child := opentracing.GlobalTracer().StartSpan( "world", opentracing.ChildOf(parent.Context())) defer child.Finish()}
Self-guided Walkthrough Tutorials
Go
Take OpenTracing for a HotROD Ride involves successive optimizations of a Go-based Ride-on-Demand demonstration service, all informed by tracing data.
Java
MicroDonuts shows the reader how to get tracing instrumentation added to a multi-service app, and includes properly-configured initialization of several OpenTracing-compatible Tracers.
Multiple languages
The OpenTracing Tutorial provides an example combining Go, Java, Python, and Node.js.
