Live video on the AT Protocol
1package cmd
2
3import (
4 "context"
5 "time"
6
7 "go.opentelemetry.io/otel"
8 "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
9 "go.opentelemetry.io/otel/sdk/trace"
10)
11
12// setupOTelSDK bootstraps the OpenTelemetry pipeline.
13// If it does not return an error, make sure to call shutdown for proper cleanup.
14func startTelemetry(ctx context.Context, endpoint string) error {
15 tracerProvider, err := newTracerProvider(ctx, endpoint)
16 if err != nil {
17 return err
18 }
19
20 otel.SetTracerProvider(tracerProvider)
21
22 <-ctx.Done()
23
24 return tracerProvider.Shutdown(ctx)
25}
26
27func newTracerProvider(ctx context.Context, endpoint string) (*trace.TracerProvider, error) {
28 exp, err := otlptracegrpc.New(ctx, otlptracegrpc.WithEndpointURL(endpoint))
29 if err != nil {
30 return nil, err
31 }
32
33 tracerProvider := trace.NewTracerProvider(
34 trace.WithBatcher(exp,
35 trace.WithBatchTimeout(time.Second)),
36 )
37 return tracerProvider, nil
38}