github.com/avenga/couper@v1.12.2/telemetry/provider/provider.go (about) 1 package provider 2 3 import ( 4 "sync" 5 6 "go.opentelemetry.io/otel/metric" 7 "go.opentelemetry.io/otel/metric/global" 8 ) 9 10 var meterProvider metric.MeterProvider 11 var meterMu sync.RWMutex 12 13 func init() { 14 meterMu.Lock() 15 defer meterMu.Unlock() 16 meterProvider = global.MeterProvider() // defaults to noop 17 } 18 19 func SetMeterProvider(provider metric.MeterProvider) { 20 meterMu.Lock() 21 defer meterMu.Unlock() 22 meterProvider = provider 23 } 24 25 func Meter(instrumentationName string) metric.Meter { 26 meterMu.RLock() 27 defer meterMu.RUnlock() 28 return meterProvider.Meter(instrumentationName) 29 }