How to Use OpenTelemetry in Go

A Complete Guide

Instrument Go applications with OpenTelemetry by initializing a tracer provider and starting spans to track request flow and performance.

Use the open-telemetry/opentelemetry-go SDK to instrument your Go application by creating a tracer and propagating context.

import (
	"context"
	"log"

	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
	"go.opentelemetry.io/otel/sdk/trace"
)

func main() {
	exp, _ := stdouttrace.New(stdouttrace.WithPrettyPrint())
	provider := trace.NewTracerProvider(trace.WithSyncer(exp))
	otel.SetTracerProvider(provider)

	tracer := otel.Tracer("my-service")
	ctx, span := tracer.Start(context.Background(), "operation")
	defer span.End()

	log.Println("Processing request")
	_ = ctx
}