in sandbox/ho11y/main.go [122:167]
func initProvider() {
ctx := context.Background()
endpoint := os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
if endpoint == "" {
endpoint = "0.0.0.0:55680"
}
log.Info("Using Otel collector at " + endpoint)
driver := otlpgrpc.NewDriver(
otlpgrpc.WithInsecure(),
otlpgrpc.WithEndpoint(endpoint),
//otlpgrpc.WithDialOption(grpc.WithBlock()),
)
exporter, err := otlp.NewExporter(ctx, driver)
handleErr(err, "Failed to create new OTLP exporter")
svcattrib := os.Getenv("OTEL_RESOURCE_ATTRIB")
if svcattrib == "" {
svcattrib = "ho11y-svc"
}
res, err := resource.New(ctx,
resource.WithAttributes(
semconv.ServiceNameKey.String(svcattrib),
),
)
handleErr(err, "Failed to create resource "+svcattrib)
tp := sdktrace.NewTracerProvider(
sdktrace.WithConfig(sdktrace.Config{
DefaultSampler: sdktrace.AlwaysSample(),
}),
sdktrace.WithResource(res),
sdktrace.WithSyncer(exporter),
sdktrace.WithIDGenerator(xray.NewIDGenerator()),
)
cont := controller.New(
processor.New(
simple.NewWithExactDistribution(),
exporter,
),
controller.WithPusher(exporter),
controller.WithCollectPeriod(2*time.Second),
)
otel.SetTracerProvider(tp)
otel.SetTextMapPropagator(xray.Propagator{})
_ = cont.Start(ctx)
}