Skip to content

Commit 54c13a9

Browse files
Inject component-identifying scope attributes (#12617)
#### Description Fork of #12384 to showcase how component attributes can be injected into scope attributes instead of log/metric/span attributes. See that PR for more context. To see the diff from the previous PR, filter changes starting from the "Prototype using scope attributes" commit. #### Link to tracking issue Resolves #12217 Also incidentally resolves #12213 and resolves #12117 #### Testing I updated the existing tests to check for scope attributes, and did some manual testing with a debug exporter to check that the scope attributes are added/removed properly. --------- Co-authored-by: Pablo Baeyens <[email protected]>
1 parent 8a79193 commit 54c13a9

File tree

117 files changed

+1580
-181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+1580
-181
lines changed

.chloggen/component-attributes.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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: 'enhancement'
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
7+
component: service
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Add "telemetry.newPipelineTelemetry" feature gate to inject component-identifying attributes in internal telemetry
11+
12+
# One or more tracking issues or pull requests related to the change
13+
issues: [12217]
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+
With the feature gate enabled, all internal telemetry (metrics/traces/logs) will include some of
20+
the following instrumentation scope attributes:
21+
- `otelcol.component.kind`
22+
- `otelcol.component.id`
23+
- `otelcol.pipeline.id`
24+
- `otelcol.signal`
25+
- `otelcol.signal.output`
26+
27+
These attributes are defined in the [Pipeline Component Telemetry RFC](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/rfcs/component-universal-telemetry.md#attributes),
28+
and identify the component instance from which the telemetry originates.
29+
They are added automatically without changes to component code.
30+
31+
These attributes were already included in internal logs as regular log attributes, starting from
32+
v0.120.0. For consistency with other signals, they have been switched to scope attributes (with
33+
the exception of logs emitted to standard output), and are now enabled by the feature gate.
34+
35+
Please make sure that the exporter / backend endpoint you use has support for instrumentation
36+
scope attributes before using this feature. If the internal telemetry is exported to another
37+
Collector, a transform processor could be used to turn them into other kinds of attributes if
38+
necessary.
39+
40+
# Optional: The change log or logs in which this entry should be included.
41+
# e.g. '[user]' or '[user, api]'
42+
# Include 'user' if the change is relevant to end users.
43+
# Include 'api' if there is a change to a library API.
44+
# Default: '[user]'
45+
change_logs: [user]

cmd/mdatagen/go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,15 @@ require (
5858
go.opentelemetry.io/collector/consumer/xconsumer v0.122.1 // indirect
5959
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
6060
go.opentelemetry.io/collector/internal/fanoutconsumer v0.122.1 // indirect
61+
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
6162
go.opentelemetry.io/collector/pdata/pprofile v0.122.1 // indirect
6263
go.opentelemetry.io/collector/pdata/testdata v0.122.1 // indirect
6364
go.opentelemetry.io/collector/pipeline/xpipeline v0.122.1 // indirect
6465
go.opentelemetry.io/collector/processor/xprocessor v0.122.1 // indirect
6566
go.opentelemetry.io/collector/receiver/xreceiver v0.122.1 // indirect
67+
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
6668
go.opentelemetry.io/otel v1.35.0 // indirect
69+
go.opentelemetry.io/otel/log v0.11.0 // indirect
6770
go.opentelemetry.io/otel/sdk v1.35.0 // indirect
6871
go.uber.org/multierr v1.11.0 // indirect
6972
golang.org/x/net v0.37.0 // indirect
@@ -137,3 +140,5 @@ replace go.opentelemetry.io/collector/pipeline/xpipeline => ../../pipeline/xpipe
137140
replace go.opentelemetry.io/collector/internal/fanoutconsumer => ../../internal/fanoutconsumer
138141

139142
replace go.opentelemetry.io/collector/connector/xconnector => ../../connector/xconnector
143+
144+
replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry

cmd/mdatagen/go.sum

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

component/componentstatus/go.mod

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,21 @@ require (
1010

1111
require (
1212
github.com/davecgh/go-spew v1.1.1 // indirect
13+
github.com/go-logr/logr v1.4.2 // indirect
14+
github.com/go-logr/stdr v1.2.2 // indirect
1315
github.com/gogo/protobuf v1.3.2 // indirect
16+
github.com/google/uuid v1.6.0 // indirect
17+
github.com/hashicorp/go-version v1.7.0 // indirect
1418
github.com/pmezard/go-difflib v1.0.0 // indirect
19+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
20+
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
21+
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
1522
go.opentelemetry.io/collector/pdata v1.28.1 // indirect
23+
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
1624
go.opentelemetry.io/otel v1.35.0 // indirect
25+
go.opentelemetry.io/otel/log v0.11.0 // indirect
1726
go.opentelemetry.io/otel/metric v1.35.0 // indirect
27+
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
1828
go.opentelemetry.io/otel/trace v1.35.0 // indirect
1929
go.uber.org/multierr v1.11.0 // indirect
2030
go.uber.org/zap v1.27.0 // indirect
@@ -32,3 +42,7 @@ replace go.opentelemetry.io/collector/component => ../
3242
replace go.opentelemetry.io/collector/pdata => ../../pdata
3343

3444
replace go.opentelemetry.io/collector/pipeline => ../../pipeline
45+
46+
replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry
47+
48+
replace go.opentelemetry.io/collector/featuregate => ../../featuregate

component/componentstatus/go.sum

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

component/componenttest/go.mod

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,14 @@ require (
2121
github.com/go-logr/stdr v1.2.2 // indirect
2222
github.com/gogo/protobuf v1.3.2 // indirect
2323
github.com/google/uuid v1.6.0 // indirect
24+
github.com/hashicorp/go-version v1.7.0 // indirect
2425
github.com/pmezard/go-difflib v1.0.0 // indirect
2526
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
27+
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
28+
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
29+
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
2630
go.opentelemetry.io/otel v1.35.0 // indirect
31+
go.opentelemetry.io/otel/log v0.11.0 // indirect
2732
golang.org/x/net v0.37.0 // indirect
2833
golang.org/x/sys v0.31.0 // indirect
2934
golang.org/x/text v0.23.0 // indirect
@@ -36,3 +41,9 @@ require (
3641
replace go.opentelemetry.io/collector/component => ../
3742

3843
replace go.opentelemetry.io/collector/pdata => ../../pdata
44+
45+
replace go.opentelemetry.io/collector/pipeline => ../../pipeline
46+
47+
replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry
48+
49+
replace go.opentelemetry.io/collector/featuregate => ../../featuregate

component/componenttest/go.sum

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

component/go.mod

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,29 @@ go 1.23.0
44

55
require (
66
github.com/stretchr/testify v1.10.0
7-
go.opentelemetry.io/collector/pdata v1.28.1
8-
go.opentelemetry.io/otel/metric v1.35.0
9-
go.opentelemetry.io/otel/trace v1.35.0
7+
go.opentelemetry.io/collector/internal/telemetry v0.122.1
108
go.uber.org/goleak v1.3.0
11-
go.uber.org/zap v1.27.0
129
)
1310

1411
require (
1512
github.com/davecgh/go-spew v1.1.1 // indirect
13+
github.com/go-logr/logr v1.4.2 // indirect
14+
github.com/go-logr/stdr v1.2.2 // indirect
1615
github.com/gogo/protobuf v1.3.2 // indirect
16+
github.com/google/uuid v1.6.0 // indirect
17+
github.com/hashicorp/go-version v1.7.0 // indirect
1718
github.com/pmezard/go-difflib v1.0.0 // indirect
19+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
20+
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
21+
go.opentelemetry.io/collector/pdata v1.28.1 // indirect
22+
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
1823
go.opentelemetry.io/otel v1.35.0 // indirect
24+
go.opentelemetry.io/otel/log v0.11.0 // indirect
25+
go.opentelemetry.io/otel/metric v1.35.0 // indirect
26+
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
27+
go.opentelemetry.io/otel/trace v1.35.0 // indirect
1928
go.uber.org/multierr v1.11.0 // indirect
29+
go.uber.org/zap v1.27.0 // indirect
2030
golang.org/x/net v0.37.0 // indirect
2131
golang.org/x/sys v0.31.0 // indirect
2232
golang.org/x/text v0.23.0 // indirect
@@ -32,3 +42,9 @@ retract (
3242
v0.76.0 // Depends on retracted pdata v1.0.0-rc10 module, use v0.76.1
3343
v0.69.0 // Release failed, use v0.69.1
3444
)
45+
46+
replace go.opentelemetry.io/collector/internal/telemetry => ../internal/telemetry
47+
48+
replace go.opentelemetry.io/collector/pipeline => ../pipeline
49+
50+
replace go.opentelemetry.io/collector/featuregate => ../featuregate

component/go.sum

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

component/telemetry.go

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,8 @@
44
package component // import "go.opentelemetry.io/collector/component"
55

66
import (
7-
"go.opentelemetry.io/otel/metric"
8-
"go.opentelemetry.io/otel/trace"
9-
"go.uber.org/zap"
10-
11-
"go.opentelemetry.io/collector/pdata/pcommon"
7+
"go.opentelemetry.io/collector/internal/telemetry"
128
)
139

1410
// TelemetrySettings provides components with APIs to report telemetry.
15-
type TelemetrySettings struct {
16-
// Logger that the factory can use during creation and can pass to the created
17-
// component to be used later as well.
18-
Logger *zap.Logger
19-
20-
// TracerProvider that the factory can pass to other instrumented third-party libraries.
21-
TracerProvider trace.TracerProvider
22-
23-
// MeterProvider that the factory can pass to other instrumented third-party libraries.
24-
MeterProvider metric.MeterProvider
25-
26-
// Resource contains the resource attributes for the collector's telemetry.
27-
Resource pcommon.Resource
28-
}
11+
type TelemetrySettings = telemetry.TelemetrySettings

config/configauth/go.mod

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,21 @@ require (
1313

1414
require (
1515
github.com/davecgh/go-spew v1.1.1 // indirect
16+
github.com/go-logr/logr v1.4.2 // indirect
17+
github.com/go-logr/stdr v1.2.2 // indirect
1618
github.com/gogo/protobuf v1.3.2 // indirect
19+
github.com/google/uuid v1.6.0 // indirect
20+
github.com/hashicorp/go-version v1.7.0 // indirect
1721
github.com/pmezard/go-difflib v1.0.0 // indirect
22+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
23+
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
24+
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
1825
go.opentelemetry.io/collector/pdata v1.28.1 // indirect
26+
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
1927
go.opentelemetry.io/otel v1.35.0 // indirect
28+
go.opentelemetry.io/otel/log v0.11.0 // indirect
2029
go.opentelemetry.io/otel/metric v1.35.0 // indirect
30+
go.opentelemetry.io/otel/sdk v1.35.0 // indirect
2131
go.opentelemetry.io/otel/trace v1.35.0 // indirect
2232
go.uber.org/multierr v1.11.0 // indirect
2333
go.uber.org/zap v1.27.0 // indirect
@@ -39,3 +49,9 @@ replace go.opentelemetry.io/collector/extension => ../../extension
3949
replace go.opentelemetry.io/collector/extension/extensionauth => ../../extension/extensionauth
4050

4151
replace go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest => ../../extension/extensionauth/extensionauthtest
52+
53+
replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry
54+
55+
replace go.opentelemetry.io/collector/pipeline => ../../pipeline
56+
57+
replace go.opentelemetry.io/collector/featuregate => ../../featuregate

0 commit comments

Comments
 (0)