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  }