Some checks failed
CI / Run lints and checks (push) Failing after 47s
CI / Run tests (push) Failing after 1s
CI / Run race tests (push) Failing after 5s
CI / Build CLI docs (push) Has been skipped
CI / Run buf actions (push) Failing after 5s
CodeQL / Analyze (go) (push) Failing after 3s
CodeQL / Analyze (javascript) (push) Failing after 2s
Docker Image Scanners / scanners (push) Failing after 3s
Format / format (push) Failing after 3s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Draft newsletter (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
38 lines
1014 B
Go
38 lines
1014 B
Go
// 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
|
|
}
|