Skip to content

Commit 4074b72

Browse files
bogdandrutucodebotensongy23
authored
Mark telemetry.disableAddressFieldForInternalTelemetry as stable (#13152)
Signed-off-by: Bogdan Drutu <[email protected]> Co-authored-by: Alex Boten <[email protected]> Co-authored-by: Yang Song <[email protected]>
1 parent b1ce36b commit 4074b72

File tree

8 files changed

+33
-143
lines changed

8 files changed

+33
-143
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: breaking
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
7+
component: service/telemetry
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Mark "telemetry.disableAddressFieldForInternalTelemetry" as stable
11+
12+
# One or more tracking issues or pull requests related to the change
13+
issues: [13152]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# Optional: The change log or logs in which this entry should be included.
21+
# e.g. '[user]' or '[user, api]'
22+
# Include 'user' if the change is relevant to end users.
23+
# Include 'api' if there is a change to a library API.
24+
# Default: '[user]'
25+
change_logs: [user]

.chloggen/useOtelWithSDKConfigurationForInternalTelemetry.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ change_type: enhancement
77
component: service
88

99
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10-
note: Remove stablized featuregate useOtelWithSDKConfigurationForInternalTelemetry
10+
note: Remove stabilized featuregate useOtelWithSDKConfigurationForInternalTelemetry
1111

1212
# One or more tracking issues or pull requests related to the change
1313
issues: [13152]

otelcol/unmarshaler_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func TestServiceUnmarshalError(t *testing.T) {
157157
},
158158
},
159159
}),
160-
expectError: "error decoding 'telemetry': decoding failed due to the following error(s):\n\nerror decoding 'logs': decoding failed due to the following error(s):\n\nerror decoding 'level': unrecognized level: \"UNKNOWN\"",
160+
expectError: "decoding failed due to the following error(s):\n\nerror decoding 'telemetry.logs': decoding failed due to the following error(s):\n\nerror decoding 'level': unrecognized level: \"UNKNOWN\"",
161161
},
162162
{
163163
name: "invalid-metrics-level",
@@ -168,7 +168,7 @@ func TestServiceUnmarshalError(t *testing.T) {
168168
},
169169
},
170170
}),
171-
expectError: "error decoding 'telemetry': decoding failed due to the following error(s):\n\nerror decoding 'metrics': decoding failed due to the following error(s):\n\nerror decoding 'level': unknown metrics level \"unknown\"",
171+
expectError: "decoding failed due to the following error(s):\n\nerror decoding 'telemetry.metrics': decoding failed due to the following error(s):\n\nerror decoding 'level': unknown metrics level \"unknown\"",
172172
},
173173
{
174174
name: "invalid-service-extensions-section",

service/service.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ func New(ctx context.Context, set Settings, cfg Config) (*Service, error) {
225225
return nil, err
226226
}
227227

228-
if cfg.Telemetry.Metrics.Level != configtelemetry.LevelNone && (len(mpConfig.Readers) != 0 || cfg.Telemetry.Metrics.Address != "") {
228+
if cfg.Telemetry.Metrics.Level != configtelemetry.LevelNone && len(mpConfig.Readers) != 0 {
229229
if err = proctelemetry.RegisterProcessMetrics(srv.telemetrySettings); err != nil {
230230
return nil, fmt.Errorf("failed to register process metrics: %w", err)
231231
}
@@ -242,10 +242,6 @@ func logsAboutMeterProvider(logger *zap.Logger, cfg telemetry.MetricsConfig, mp
242242
return
243243
}
244244

245-
if len(cfg.Address) != 0 {
246-
logger.Warn("service::telemetry::metrics::address is being deprecated in favor of service::telemetry::metrics::readers")
247-
}
248-
249245
if lmp, ok := mp.(interface {
250246
LogAboutServers(logger *zap.Logger, cfg telemetry.MetricsConfig)
251247
}); ok {

service/telemetry/config.go

Lines changed: 3 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,17 @@ package telemetry // import "go.opentelemetry.io/collector/service/telemetry"
55

66
import (
77
"errors"
8-
"fmt"
9-
"net"
10-
"strconv"
11-
12-
config "go.opentelemetry.io/contrib/otelconf/v0.3.0"
138

149
"go.opentelemetry.io/collector/config/configtelemetry"
15-
"go.opentelemetry.io/collector/confmap"
1610
"go.opentelemetry.io/collector/featuregate"
1711
"go.opentelemetry.io/collector/service/telemetry/internal/migration"
1812
)
1913

20-
var _ confmap.Unmarshaler = (*Config)(nil)
21-
22-
var disableAddressFieldForInternalTelemetryFeatureGate = featuregate.GlobalRegistry().MustRegister(
14+
var _ = featuregate.GlobalRegistry().MustRegister(
2315
"telemetry.disableAddressFieldForInternalTelemetry",
24-
featuregate.StageBeta,
16+
featuregate.StageStable,
2517
featuregate.WithRegisterFromVersion("v0.111.0"),
26-
featuregate.WithRegisterToVersion("v0.123.0"),
18+
featuregate.WithRegisterToVersion("v0.127.0"),
2719
featuregate.WithRegisterDescription("controls whether the deprecated address field for internal telemetry is still supported"))
2820

2921
// Config defines the configurable settings for service telemetry.
@@ -57,53 +49,6 @@ type MetricsConfig = migration.MetricsConfigV030
5749
// Experimental: *NOTE* this structure is subject to change or removal in the future.
5850
type TracesConfig = migration.TracesConfigV030
5951

60-
func (c *Config) Unmarshal(conf *confmap.Conf) error {
61-
if err := conf.Unmarshal(c); err != nil {
62-
return err
63-
}
64-
65-
// If the support for "metrics::address" is disabled, nothing to do.
66-
// TODO: when this gate is marked stable remove the whole Unmarshal definition.
67-
if disableAddressFieldForInternalTelemetryFeatureGate.IsEnabled() {
68-
return nil
69-
}
70-
71-
if len(c.Metrics.Address) != 0 { //nolint:staticcheck // SA1019
72-
host, port, err := net.SplitHostPort(c.Metrics.Address) //nolint:staticcheck // SA1019
73-
if err != nil {
74-
return fmt.Errorf("failing to parse metrics address %q: %w", c.Metrics.Address, err) //nolint:staticcheck // SA1019
75-
}
76-
portInt, err := strconv.Atoi(port)
77-
if err != nil {
78-
return fmt.Errorf("failing to extract the port from the metrics address %q: %w", c.Metrics.Address, err) //nolint:staticcheck // SA1019
79-
}
80-
81-
// User did not overwrite readers, so we will remove the default configured reader.
82-
if !conf.IsSet("metrics::readers") {
83-
c.Metrics.Readers = nil
84-
}
85-
86-
c.Metrics.Readers = append(c.Metrics.Readers, config.MetricReader{
87-
Pull: &config.PullMetricReader{
88-
Exporter: config.PullMetricExporter{
89-
Prometheus: &config.Prometheus{
90-
Host: &host,
91-
Port: &portInt,
92-
WithoutScopeInfo: newPtr(true),
93-
WithoutUnits: newPtr(true),
94-
WithoutTypeSuffix: newPtr(true),
95-
WithResourceConstantLabels: &config.IncludeExclude{
96-
Included: []string{},
97-
},
98-
},
99-
},
100-
},
101-
})
102-
}
103-
104-
return nil
105-
}
106-
10752
// Validate checks whether the current configuration is valid
10853
func (c *Config) Validate() error {
10954
// Check when service telemetry metric level is not none, the metrics readers should not be empty

service/telemetry/config_test.go

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"go.opentelemetry.io/collector/config/configtelemetry"
1616
"go.opentelemetry.io/collector/confmap"
1717
"go.opentelemetry.io/collector/confmap/confmaptest"
18-
"go.opentelemetry.io/collector/featuregate"
1918
)
2019

2120
func TestComponentConfigStruct(t *testing.T) {
@@ -30,82 +29,13 @@ func TestUnmarshalDefaultConfig(t *testing.T) {
3029
}
3130

3231
func TestUnmarshalEmptyMetricReaders(t *testing.T) {
33-
prev := disableAddressFieldForInternalTelemetryFeatureGate.IsEnabled()
34-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), false))
35-
defer func() {
36-
// Restore previous value.
37-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), prev))
38-
}()
3932
cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config_empty_readers.yaml"))
4033
require.NoError(t, err)
4134
cfg := NewFactory().CreateDefaultConfig()
4235
require.NoError(t, cm.Unmarshal(&cfg))
4336
require.Empty(t, cfg.(*Config).Metrics.Readers)
4437
}
4538

46-
func TestUnmarshalConfigDeprecatedAddress(t *testing.T) {
47-
prev := disableAddressFieldForInternalTelemetryFeatureGate.IsEnabled()
48-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), false))
49-
defer func() {
50-
// Restore previous value.
51-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), prev))
52-
}()
53-
cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config_deprecated_address.yaml"))
54-
require.NoError(t, err)
55-
cfg := NewFactory().CreateDefaultConfig()
56-
require.NoError(t, cm.Unmarshal(&cfg))
57-
require.Len(t, cfg.(*Config).Metrics.Readers, 1)
58-
assert.Equal(t, "localhost", *cfg.(*Config).Metrics.Readers[0].Pull.Exporter.Prometheus.Host)
59-
assert.Equal(t, 6666, *cfg.(*Config).Metrics.Readers[0].Pull.Exporter.Prometheus.Port)
60-
}
61-
62-
func TestUnmarshalConfigDeprecatedAddressGateEnabled(t *testing.T) {
63-
prev := disableAddressFieldForInternalTelemetryFeatureGate.IsEnabled()
64-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), true))
65-
defer func() {
66-
// Restore previous value.
67-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), prev))
68-
}()
69-
cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config_deprecated_address.yaml"))
70-
require.NoError(t, err)
71-
cfg := NewFactory().CreateDefaultConfig()
72-
require.NoError(t, cm.Unmarshal(&cfg))
73-
require.Len(t, cfg.(*Config).Metrics.Readers, 1)
74-
assert.Equal(t, "localhost", *cfg.(*Config).Metrics.Readers[0].Pull.Exporter.Prometheus.Host)
75-
assert.Equal(t, 8888, *cfg.(*Config).Metrics.Readers[0].Pull.Exporter.Prometheus.Port)
76-
}
77-
78-
func TestUnmarshalConfigInvalidDeprecatedAddress(t *testing.T) {
79-
prev := disableAddressFieldForInternalTelemetryFeatureGate.IsEnabled()
80-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), false))
81-
defer func() {
82-
// Restore previous value.
83-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), prev))
84-
}()
85-
cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config_invalid_deprecated_address.yaml"))
86-
require.NoError(t, err)
87-
cfg := NewFactory().CreateDefaultConfig()
88-
require.Error(t, cm.Unmarshal(&cfg))
89-
}
90-
91-
func TestUnmarshalConfigDeprecatedAddressAndReaders(t *testing.T) {
92-
prev := disableAddressFieldForInternalTelemetryFeatureGate.IsEnabled()
93-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), false))
94-
defer func() {
95-
// Restore previous value.
96-
require.NoError(t, featuregate.GlobalRegistry().Set(disableAddressFieldForInternalTelemetryFeatureGate.ID(), prev))
97-
}()
98-
cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config_deprecated_address_and_readers.yaml"))
99-
require.NoError(t, err)
100-
cfg := NewFactory().CreateDefaultConfig()
101-
require.NoError(t, cm.Unmarshal(&cfg))
102-
require.Len(t, cfg.(*Config).Metrics.Readers, 2)
103-
assert.Equal(t, "localhost", *cfg.(*Config).Metrics.Readers[0].Pull.Exporter.Prometheus.Host)
104-
assert.Equal(t, 9999, *cfg.(*Config).Metrics.Readers[0].Pull.Exporter.Prometheus.Port)
105-
assert.Equal(t, "192.168.0.1", *cfg.(*Config).Metrics.Readers[1].Pull.Exporter.Prometheus.Host)
106-
assert.Equal(t, 6666, *cfg.(*Config).Metrics.Readers[1].Pull.Exporter.Prometheus.Port)
107-
}
108-
10939
func TestConfigValidate(t *testing.T) {
11040
tests := []struct {
11141
name string

service/telemetry/internal/migration/v0.2.0.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ type tracesConfigV020 struct {
1919

2020
type metricsConfigV020 struct {
2121
Level configtelemetry.Level `mapstructure:"level"`
22-
Address string `mapstructure:"address"`
2322
Readers []configv02.MetricReader `mapstructure:"readers"`
2423
}
2524

@@ -166,7 +165,6 @@ func metricsConfigV02ToV03(v2 metricsConfigV020, v3 *MetricsConfigV030) error {
166165
}
167166
}
168167
v3.Level = v2.Level
169-
v3.Address = v2.Address
170168
v3.Readers = readers
171169
return nil
172170
}

service/telemetry/internal/migration/v0.3.0.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,18 +67,14 @@ type MetricsConfigV030 struct {
6767
// - "detailed" adds dimensions and views to the previous levels.
6868
Level configtelemetry.Level `mapstructure:"level"`
6969

70-
// Deprecated: [v0.111.0] use readers configuration.
71-
Address string `mapstructure:"address,omitempty"`
72-
7370
config.MeterProvider `mapstructure:",squash"`
7471
}
7572

7673
func (c *MetricsConfigV030) Unmarshal(conf *confmap.Conf) error {
7774
unmarshaled := *c
7875
if err := conf.Unmarshal(c); err != nil {
7976
v02 := metricsConfigV020{
80-
Level: unmarshaled.Level,
81-
Address: unmarshaled.Address,
77+
Level: unmarshaled.Level,
8278
}
8379
// try unmarshaling using v0.2.0 struct
8480
if e := conf.Unmarshal(&v02); e != nil {

0 commit comments

Comments
 (0)