Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setup the correct meter provider if telemetry.useOtelForInternalMetrics featuregate enabled #5146

Merged
merged 1 commit into from
Apr 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- Do not set TraceProvider to global otel (#5138)
- Remove deprecated funcs from otlpgrpc (#5144)
- Add Scheme to MapProvider interface (#5068)
- Do not set MeterProvider to global otel (#5146)

### 🚩 Deprecations 🚩

Expand All @@ -17,6 +18,8 @@

### 🧰 Bug fixes 🧰

- Setup the correct meter provider if telemetry.useOtelForInternalMetrics featuregate enabled (#5146)

## v0.48.0 Beta

### 🛑 Breaking changes 🛑
Expand Down
20 changes: 11 additions & 9 deletions service/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ func New(set CollectorSettings) (*Collector, error) {
return &Collector{
logger: zap.NewNop(), // Set a Nop logger as a place holder until a logger is created based on configuration

tracerProvider: trace.NewNoopTracerProvider(),
meterProvider: nonrecording.NewNoopMeterProvider(),
asyncErrorChannel: make(chan error),

set: set,
state: int32(Starting),
shutdownChan: make(chan struct{}),
Expand Down Expand Up @@ -215,6 +219,13 @@ func (col *Collector) setupConfigurationComponents(ctx context.Context) error {
return err
}

// TODO: This should be part of the service initialization, which should be responsible to create TelemetrySettings.
// For the moment happens here, since it needs service.Config and Logger.
// It is called once because that is how it is implemented using sync.Once.
if err = collectorTelemetry.init(col); err != nil {
return err
}

if err = col.service.Start(ctx); err != nil {
return err
}
Expand All @@ -230,20 +241,11 @@ func (col *Collector) Run(ctx context.Context) error {
sdktrace.WithSampler(internal.AlwaysRecord()),
sdktrace.WithSpanProcessor(col.zPagesSpanProcessor))

col.meterProvider = nonrecording.NewNoopMeterProvider()

col.asyncErrorChannel = make(chan error)

if err := col.setupConfigurationComponents(ctx); err != nil {
col.setCollectorState(Closed)
return err
}

if err := collectorTelemetry.init(col); err != nil {
col.setCollectorState(Closed)
return err
}

col.logger.Info("Starting "+col.set.BuildInfo.Command+"...",
zap.String("Version", col.set.BuildInfo.Version),
zap.Int("NumCPU", runtime.NumCPU()),
Expand Down
7 changes: 3 additions & 4 deletions service/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (
"github.com/google/uuid"
"go.opencensus.io/stats/view"
otelprometheus "go.opentelemetry.io/otel/exporters/prometheus"
"go.opentelemetry.io/otel/metric/global"
"go.opentelemetry.io/otel/sdk/metric/aggregator/histogram"
controller "go.opentelemetry.io/otel/sdk/metric/controller/basic"
"go.opentelemetry.io/otel/sdk/metric/export/aggregation"
Expand Down Expand Up @@ -113,7 +112,7 @@ func (tel *colTelemetry) initOnce(col *Collector) error {

var pe http.Handler
if featuregate.IsEnabled(useOtelForInternalMetricsfeatureGateID) {
otelHandler, err := tel.initOpenTelemetry()
otelHandler, err := tel.initOpenTelemetry(col)
if err != nil {
return err
}
Expand Down Expand Up @@ -193,7 +192,7 @@ func (tel *colTelemetry) initOpenCensus(col *Collector, instanceID string) (http
return pe, nil
}

func (tel *colTelemetry) initOpenTelemetry() (http.Handler, error) {
func (tel *colTelemetry) initOpenTelemetry(col *Collector) (http.Handler, error) {
config := otelprometheus.Config{}
c := controller.New(
processor.NewFactory(
Expand All @@ -210,7 +209,7 @@ func (tel *colTelemetry) initOpenTelemetry() (http.Handler, error) {
return nil, err
}

global.SetMeterProvider(pe.MeterProvider())
col.meterProvider = pe.MeterProvider()
return pe, err
}

Expand Down