mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 05:02:21 +08:00

Adds support for logs (specify level), metrics (enable metrics and Prometheus /metrics endpoint and traces (jaeger or otlp) for standalone API server. This will allow any grafana core service part of standalone apiserver to use logging, metrics and traces as normal.
33 lines
813 B
Go
33 lines
813 B
Go
package tracing
|
|
|
|
import (
|
|
"go.opentelemetry.io/otel"
|
|
tracesdk "go.opentelemetry.io/otel/sdk/trace"
|
|
"go.opentelemetry.io/otel/sdk/trace/tracetest"
|
|
)
|
|
|
|
type TracerForTestOption func(tp *tracesdk.TracerProvider)
|
|
|
|
func WithSpanProcessor(sp tracesdk.SpanProcessor) TracerForTestOption {
|
|
return TracerForTestOption(func(tp *tracesdk.TracerProvider) {
|
|
tp.RegisterSpanProcessor(sp)
|
|
})
|
|
}
|
|
|
|
func InitializeTracerForTest(opts ...TracerForTestOption) Tracer {
|
|
exp := tracetest.NewInMemoryExporter()
|
|
tp, _ := initTracerProvider(exp, "grafana", "testing", tracesdk.AlwaysSample())
|
|
|
|
for _, opt := range opts {
|
|
opt(tp)
|
|
}
|
|
|
|
otel.SetTracerProvider(tp)
|
|
|
|
cfg := NewEmptyTracingConfig()
|
|
cfg.Propagation = "jaeger,w3c"
|
|
ots := &TracingService{cfg: cfg, tracerProvider: tp}
|
|
_ = ots.initOpentelemetryTracer()
|
|
return ots
|
|
}
|