From 4475aaa8f88089e505da4ad79993004719f6d2c2 Mon Sep 17 00:00:00 2001 From: John Watson Date: Tue, 17 May 2022 02:13:49 -0700 Subject: [PATCH] Create README.md for the ot bridge (#2896) * Create README.md Some very bare-bones introductory documentation on how to use the ot bridge * Update README.md linting * Update README.md more linting * Update bridge/opentracing/README.md Co-authored-by: Tyler Yahn * Update bridge/opentracing/README.md Co-authored-by: Tyler Yahn * Update bridge/opentracing/README.md Co-authored-by: Tyler Yahn * Update bridge/opentracing/README.md Co-authored-by: Tyler Yahn * Update bridge/opentracing/README.md Co-authored-by: Tyler Yahn * Update bridge/opentracing/README.md Co-authored-by: Tyler Yahn Co-authored-by: Tyler Yahn --- bridge/opentracing/README.md | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 bridge/opentracing/README.md diff --git a/bridge/opentracing/README.md b/bridge/opentracing/README.md new file mode 100644 index 00000000000..a4477a87306 --- /dev/null +++ b/bridge/opentracing/README.md @@ -0,0 +1,40 @@ +# OpenTelemetry/OpenTracing Bridge + +## Getting started + +`go get go.opentelemetry.io/otel/bridge/opentracing` + +Assuming you have configured an OpenTelemetry `TracerProvider`, these will be the steps to follow to wire up the bridge: + +```go +import ( + "go.opentelemetry.io/otel" + otelBridge "go.opentelemetry.io/otel/bridge/opentracing" +) + +func main() { + /* Create tracerProvider and configure OpenTelemetry ... */ + + otelTracer := tracerProvider.Tracer("tracer_name") + // Use the bridgeTracer as your OpenTracing tracer. + bridgeTracer, wrapperTracerProvider := otelBridge.NewTracerPair(otelTracer) + // Set the wrapperTracerProvider as the global OpenTelemetry + // TracerProvider so instrumentation will use it by default. + otel.SetTracerProvider(wrapperTracerProvider) + + /* ... */ +} +``` + +## Interop from trace context from OpenTracing to OpenTelemetry + +In order to get OpenTracing spans properly into the OpenTelemetry context, so they can be propagated (both internally, and externally), you will need to explicitly use the `BridgeTracer` for creating your OpenTracing spans, rather than a bare OpenTracing `Tracer` instance. + +When you have started an OpenTracing Span, make sure the OpenTelemetry knows about it like this: + +```go + ctxWithOTSpan := opentracing.ContextWithSpan(ctx, otSpan) + ctxWithOTAndOTelSpan := bridgeTracer.ContextWithSpanHook(ctxWithOTSpan, otSpan) + // Propagate the otSpan to both OpenTracing and OpenTelemetry + // instrumentation by using the ctxWithOTAndOTelSpan context. +```