Skip to content

Commit

Permalink
Changed how the telemetryInitializer is created (#6138)
Browse files Browse the repository at this point in the history
* Changed how the telemetryInitializer is created to make it so it's not global

Signed-off-by: Corbin Phelps <corbin.phelps@bluemedora.com>

* Updated changelog

Signed-off-by: Corbin Phelps <corbin.phelps@bluemedora.com>

* Fixed linter error

Signed-off-by: Corbin Phelps <corbin.phelps@bluemedora.com>

* Moved register of Internal Metrics Featuregate to an init function and removed once logic

Signed-off-by: Corbin Phelps <corbin.phelps@bluemedora.com>

Signed-off-by: Corbin Phelps <corbin.phelps@bluemedora.com>
  • Loading branch information
Corbin Phelps authored Sep 27, 2022
1 parent af242a3 commit 93e9004
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@

- Add AppendEmpty and EnsureCapacity method to primitive pdata slices (#6060)
- Expose `AsRaw` and `FromRaw` `pcommon.Value` methods (#6090)
- Updated how `telemetryInitializer` is created so it's instanced per Collector instance rather than global to the process (#6138)

## v0.60.0 Beta

Expand Down
3 changes: 2 additions & 1 deletion service/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/extension/ballastextension"
"go.opentelemetry.io/collector/featuregate"
"go.opentelemetry.io/collector/service/internal/telemetrylogs"
)

Expand Down Expand Up @@ -92,7 +93,7 @@ func New(set CollectorSettings) (*Collector, error) {
}

if set.telemetry == nil {
set.telemetry = collectorTelemetry
set.telemetry = newColTelemetry(featuregate.GetRegistry())
}

return &Collector{
Expand Down
4 changes: 3 additions & 1 deletion service/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,9 @@ func TestCollectorStartWithOpenCensusMetrics(t *testing.T) {
func TestCollectorStartWithOpenTelemetryMetrics(t *testing.T) {
for _, tc := range ownMetricsTestCases("test version") {
t.Run(tc.name, func(t *testing.T) {
colTel := newColTelemetry(featuregate.NewRegistry())
registry := featuregate.NewRegistry()
registerInternalMetricFeatureGate(registry)
colTel := newColTelemetry(registry)
require.NoError(t, colTel.registry.Apply(map[string]bool{useOtelForInternalMetricsfeatureGateID: true}))
testCollectorStartHelper(t, colTel, tc)
})
Expand Down
13 changes: 9 additions & 4 deletions service/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ import (
"go.opentelemetry.io/collector/service/telemetry"
)

// collectorTelemetry is collector's own telemetrySettings.
var collectorTelemetry = newColTelemetry(featuregate.GetRegistry())

const (
zapKeyTelemetryAddress = "address"
zapKeyTelemetryLevel = "level"
Expand Down Expand Up @@ -77,13 +74,21 @@ type telemetryInitializer struct {
doInitOnce sync.Once
}

func newColTelemetry(registry *featuregate.Registry) *telemetryInitializer {
func init() {
// register feature gate
registerInternalMetricFeatureGate(featuregate.GetRegistry())
}

// registerInternalMetricFeatureGate registers the Internal Metric feature gate to the passed in registry
func registerInternalMetricFeatureGate(registry *featuregate.Registry) {
registry.MustRegister(featuregate.Gate{
ID: useOtelForInternalMetricsfeatureGateID,
Description: "controls whether the collector to uses OpenTelemetry for internal metrics",
Enabled: false,
})
}

func newColTelemetry(registry *featuregate.Registry) *telemetryInitializer {
return &telemetryInitializer{
registry: registry,
mp: metric.NewNoopMeterProvider(),
Expand Down

0 comments on commit 93e9004

Please sign in to comment.