Files
Zach LeslieandGitHub a6f3928b05 Update dskit and adjust memcached interface signature (#5604)
* Update dskit and adjust memcached interface signature

* Generate config manifest
2025-09-03 18:34:46 +02:00

43 lines
1.4 KiB
Go

package tracing
import (
"io"
"github.com/pkg/errors"
jaegercfg "github.com/uber/jaeger-client-go/config"
jaegerprom "github.com/uber/jaeger-lib/metrics/prometheus"
)
// installJaeger registers Jaeger as the OpenTracing implementation.
func installJaeger(serviceName string, cfg *jaegercfg.Configuration, options ...jaegercfg.Option) (io.Closer, error) {
metricsFactory := jaegerprom.New()
// put the metricsFactory earlier so provided options can override it
opts := append([]jaegercfg.Option{jaegercfg.Metrics(metricsFactory)}, options...)
closer, err := cfg.InitGlobalTracer(serviceName, opts...)
if err != nil {
return nil, errors.Wrap(err, "could not initialize jaeger tracer")
}
return closer, nil
}
// NewFromEnv is a convenience function to allow tracing configuration
// via environment variables
//
// Tracing will be enabled if one (or more) of the following environment variables is used to configure trace reporting:
// - JAEGER_AGENT_HOST
// - JAEGER_SAMPLER_MANAGER_HOST_PORT
func NewFromEnv(serviceName string, options ...jaegercfg.Option) (io.Closer, error) {
cfg, err := jaegercfg.FromEnv()
if err != nil {
return nil, errors.Wrap(err, "could not load jaeger tracer configuration")
}
if cfg.Sampler.SamplingServerURL == "" && cfg.Reporter.LocalAgentHostPort == "" && cfg.Reporter.CollectorEndpoint == "" {
return nil, ErrBlankJaegerTraceConfiguration
}
return installJaeger(serviceName, cfg, options...)
}