MCPcopy
hub / github.com/elastic/go-elasticsearch / initOTel

Function initOTel

_examples/interceptor/cmd/custom_observability/main.go:115–158  ·  view source on GitHub ↗

initOTel initializes OpenTelemetry with stdout exporters for both tracing and metrics.

()

Source from the content-addressed store, hash-verified

113
114// initOTel initializes OpenTelemetry with stdout exporters for both tracing and metrics.
115func initOTel() func() {
116 ctx := context.Background()
117
118 // Create resource with service info
119 res, _ := resource.Merge(
120 resource.Default(),
121 resource.NewWithAttributes(
122 semconv.SchemaURL,
123 semconv.ServiceName("elasticsearch-example"),
124 ),
125 )
126
127 // Initialize trace exporter (stdout with pretty print)
128 traceExporter, err := stdouttrace.New(stdouttrace.WithPrettyPrint())
129 if err != nil {
130 panic(err)
131 }
132
133 // Initialize tracer provider
134 tracerProvider := sdktrace.NewTracerProvider(
135 sdktrace.WithResource(res),
136 sdktrace.WithSyncer(traceExporter), // Use Syncer for immediate output
137 )
138 otel.SetTracerProvider(tracerProvider)
139
140 // Initialize metric exporter (stdout)
141 metricExporter, err := stdoutmetric.New(stdoutmetric.WithPrettyPrint())
142 if err != nil {
143 panic(err)
144 }
145
146 // Initialize meter provider with periodic reader
147 meterProvider := sdkmetric.NewMeterProvider(
148 sdkmetric.WithResource(res),
149 sdkmetric.WithReader(sdkmetric.NewPeriodicReader(metricExporter, sdkmetric.WithInterval(time.Second))),
150 )
151 otel.SetMeterProvider(meterProvider)
152
153 // Return shutdown function
154 return func() {
155 _ = tracerProvider.Shutdown(ctx)
156 _ = meterProvider.Shutdown(ctx)
157 }
158}
159
160// LoggingInterceptor creates an interceptor that logs request and response details.
161func LoggingInterceptor() elastictransport.InterceptorFunc {

Callers 1

mainFunction · 0.85

Calls 3

WithResourceMethod · 0.80
MergeMethod · 0.45
WithIntervalMethod · 0.45

Tested by

no test coverage detected