Tracing
Pitaya supports tracing using OpenTelemetry.
Using OpenTelemetry tracing
Pitaya supports tracing using OpenTelemetry. To enable and configure OpenTelemetry tracing, you can use standard OpenTelemetry environment variables.
First, make sure to call the InitializeOtel function in your main application:
func main() {
// ...
err := tracing.InitializeOtel()
if err != nil {
logger.Log.Errorf("Failed to initialize OpenTelemetry: %v", err)
}
// ...
}
Configuration Options
OpenTelemetry can be configured using standard environment variables. Here are some key variables you might want to set:
OTEL_SERVICE_NAME: The name of your service.OTEL_EXPORTER_OTLP_ENDPOINT: The endpoint of your OpenTelemetry collector.OTEL_EXPORTER_OTLP_PROTOCOL: The protocol to use (e.g.,grpcorhttp/protobuf).OTEL_TRACES_SAMPLER: The sampling strategy to use.OTEL_TRACES_SAMPLER_ARG: The argument for the sampling strategy.OTEL_SDK_DISABLED: Set totrueto disable tracing.
For a complete list of OpenTelemetry environment variables, refer to the OpenTelemetry specification.
Testing Locally
To test OpenTelemetry tracing locally, you can use Jaeger as your tracing backend. First, start Jaeger using Docker:
make run-jaeger-aio
make run-cluster-example-frontend-tracing
make run-cluster-example-backend-tracing
The last two commands will run your Pitaya servers with OpenTelemetry configured with the following envs:
OTEL_SERVICE_NAME=example-frontend OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_TRACES_SAMPLER=parentbased_traceidratio OTEL_TRACES_SAMPLER_ARG="1"
OTEL_SERVICE_NAME=example-backend OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_TRACES_SAMPLER=parentbased_traceidratio OTEL_TRACES_SAMPLER_ARG="1"
Access the Jaeger UI at http://localhost:16686 to view and analyze your traces.