// Copyright © 2023 Ory Corp // SPDX-License-Identifier: Apache-2.0 package otelx import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/exporters/zipkin" "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" semconv "go.opentelemetry.io/otel/semconv/v1.27.0" "go.opentelemetry.io/otel/trace" ) func SetupZipkin(t *Tracer, tracerName string, c *Config) (trace.Tracer, error) { exp, err := zipkin.New(c.Providers.Zipkin.ServerURL) if err != nil { return nil, err } tpOpts := []sdktrace.TracerProviderOption{ sdktrace.WithBatcher(exp), sdktrace.WithResource(resource.NewWithAttributes( semconv.SchemaURL, semconv.ServiceName(c.ServiceName), semconv.DeploymentEnvironmentName(c.DeploymentEnvironment), )), sdktrace.WithSampler(sdktrace.ParentBased(sdktrace.TraceIDRatioBased( c.Providers.Zipkin.Sampling.SamplingRatio, ))), } tp := sdktrace.NewTracerProvider(tpOpts...) otel.SetTracerProvider(tp) return tp.Tracer(tracerName), nil }