From 6fc2b7503df750789ffccca6bc34c242a5382d0b Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 9 Aug 2021 17:45:31 +0200 Subject: [PATCH] add tracing utils to ocis-pkg --- ocis-pkg/tracing/tracing.go | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 ocis-pkg/tracing/tracing.go diff --git a/ocis-pkg/tracing/tracing.go b/ocis-pkg/tracing/tracing.go new file mode 100644 index 0000000000..1965535594 --- /dev/null +++ b/ocis-pkg/tracing/tracing.go @@ -0,0 +1,41 @@ +package tracing + +import ( + "fmt" + + "go.opentelemetry.io/otel/exporters/jaeger" + "go.opentelemetry.io/otel/sdk/resource" + sdktrace "go.opentelemetry.io/otel/sdk/trace" + semconv "go.opentelemetry.io/otel/semconv/v1.4.0" +) + +// GetTraceProvider returns a configured open-telemetry trace provider. +func GetTraceProvider(collectorEndpoint, traceType, serviceName string) (*sdktrace.TracerProvider, error) { + switch t := traceType; t { + case "jaeger": + { + exp, err := jaeger.New( + jaeger.WithCollectorEndpoint( + jaeger.WithEndpoint(collectorEndpoint), + ), + ) + if err != nil { + return nil, err + } + + return sdktrace.NewTracerProvider( + sdktrace.WithBatcher(exp), + sdktrace.WithResource(resource.NewWithAttributes( + semconv.SchemaURL, + semconv.ServiceNameKey.String(serviceName)), + ), + ), nil + } + case "agent": + fallthrough + case "zipkin": + fallthrough + default: + return nil, fmt.Errorf("invalid trace configuration") + } +}