in Elastiflix/go-favorite-otel-manual/main.go [47:94]
func initTracer() func(context.Context) error {
tracer = otel.Tracer("go-favorite-otel-manual")
// remove https:// from the collector URL if it exists
collectorURL = strings.Replace(collectorURL, "https://", "", 1)
//serviceVersion := "v1.0.0"
secureOption := otlptracegrpc.WithInsecure()
// split otlpHeaders by comma and convert to map
headers := make(map[string]string)
for _, header := range strings.Split(otlpHeaders, ",") {
headerParts := strings.Split(header, "=")
if len(headerParts) == 2 {
headers[headerParts[0]] = headerParts[1]
}
}
exporter, err := otlptrace.New(
context.Background(),
otlptracegrpc.NewClient(
secureOption,
otlptracegrpc.WithEndpoint(collectorURL),
otlptracegrpc.WithHeaders(headers),
otlptracegrpc.WithTLSCredentials(credentials.NewTLS(&tls.Config{})),
),
)
if err != nil {
log.Fatal(err)
}
otel.SetTracerProvider(
sdktrace.NewTracerProvider(
sdktrace.WithSampler(sdktrace.AlwaysSample()),
sdktrace.WithBatcher(exporter),
//sdktrace.WithResource(resources),
),
)
otel.SetTextMapPropagator(
propagation.NewCompositeTextMapPropagator(
propagation.Baggage{},
propagation.TraceContext{},
),
)
return exporter.Shutdown
}