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

Inject component-identifying scope attributes #12617

Merged
merged 53 commits into from
Mar 28, 2025
Merged
Show file tree
Hide file tree
Changes from 49 commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
9238c22
Wrap TelemetrySettings providers to add component-identifying attributes
jade-guiton-dd Feb 13, 2025
8ef0c86
Merge branch 'main' into metric-span-component-attributes
jade-guiton-dd Feb 13, 2025
2fbd5b8
Add license headers
jade-guiton-dd Feb 14, 2025
88e477d
Fix linting
jade-guiton-dd Feb 14, 2025
806fb7a
Fix bug
jade-guiton-dd Feb 14, 2025
9e0efa5
Add changelog
jade-guiton-dd Feb 14, 2025
213ef9d
make gotidy
jade-guiton-dd Feb 14, 2025
766266d
make goporto
jade-guiton-dd Feb 14, 2025
c242492
Fix bug 2
jade-guiton-dd Feb 14, 2025
106dd59
Fix otlp receiver test
jade-guiton-dd Feb 14, 2025
57519e6
Rename to WithoutAttributes, unexport attribute.Set field
jade-guiton-dd Feb 14, 2025
3d0711e
Merge branch 'main' into metric-span-component-attributes
jade-guiton-dd Feb 14, 2025
21e7841
Add missing license
jade-guiton-dd Feb 14, 2025
90c88a5
Fix linting and import comment
jade-guiton-dd Feb 14, 2025
15dc7dd
Add special wrapper for TracerProvider from offical SDK
jade-guiton-dd Feb 14, 2025
81be0d3
Fix linting
jade-guiton-dd Feb 14, 2025
8124d82
Add test for wrapped meter provider
jade-guiton-dd Feb 17, 2025
fae6bb6
Lint and add license to new test
jade-guiton-dd Feb 17, 2025
7f5ebd8
Add test for wrapped tracer provider
jade-guiton-dd Feb 17, 2025
aa1f5e1
Add test for RegisterCallback
jade-guiton-dd Feb 17, 2025
1ba12b6
Update comment about API publicization
jade-guiton-dd Feb 17, 2025
5fe0643
Add tests for non-official SDK support
jade-guiton-dd Feb 17, 2025
17fdf81
Updated changelog
jade-guiton-dd Feb 18, 2025
5d7a01a
Merge branch 'main' into metric-span-component-attributes
jade-guiton-dd Feb 18, 2025
203c964
Prototype using scope attributes
jade-guiton-dd Mar 7, 2025
bee9d0c
Merge branch 'main' into component-attributes-scope
jade-guiton-dd Mar 12, 2025
3a17ac1
Fix linting issues
jade-guiton-dd Mar 12, 2025
1d1b8b7
Fix otlpreceiver/memorylimiterprocessor tests
jade-guiton-dd Mar 12, 2025
9a93175
make gotidy
jade-guiton-dd Mar 12, 2025
c440bd6
Fix more tests
jade-guiton-dd Mar 12, 2025
bd978c9
Simpler logger test
jade-guiton-dd Mar 12, 2025
bd95327
Add back otelcorecol toolchain directive
jade-guiton-dd Mar 12, 2025
cfb5488
Update changelog based on suggestion
jade-guiton-dd Mar 18, 2025
5e0351c
Added warning about breaking changes to TelemetrySettings
jade-guiton-dd Mar 18, 2025
d94f249
Merge branch 'main' into component-attributes-scope
jade-guiton-dd Mar 18, 2025
7306de2
Fix imports
jade-guiton-dd Mar 18, 2025
f39a2fe
Redesign Zap wrapper to add attributes to console output as well
jade-guiton-dd Mar 18, 2025
b82ae67
Fix linting and tests
jade-guiton-dd Mar 19, 2025
c237cc8
Merge branch 'main' into component-attributes-scope
jade-guiton-dd Mar 19, 2025
2938909
Update TODO comment about otelzap.WithAttributes
jade-guiton-dd Mar 19, 2025
7798c2a
Merge branch 'main' into component-attributes-scope
jade-guiton-dd Mar 19, 2025
563b8f8
Implement coreWithAttributes with pointer receiver
jade-guiton-dd Mar 19, 2025
b999f38
Merge branch 'main' into component-attributes-scope
jade-guiton-dd Mar 19, 2025
5e525d7
Add comments in Zap wrapper
jade-guiton-dd Mar 19, 2025
cf8fe64
Update TODO comment about otelzap again
jade-guiton-dd Mar 20, 2025
97eaefe
Add even more comments
jade-guiton-dd Mar 27, 2025
743680f
Add debug log when unable to inject component attributes
jade-guiton-dd Mar 27, 2025
e7b5373
Add attribute injection behind beta "telemetry.pipelineTelemetryRfc" …
jade-guiton-dd Mar 27, 2025
dc87c89
Merge branch 'main' into component-attributes-scope
jade-guiton-dd Mar 27, 2025
6006784
Rename feature gate and change from beta to alpha
jade-guiton-dd Mar 27, 2025
71ed59d
Fix linting
jade-guiton-dd Mar 27, 2025
3705308
Update changelog to include feature gate
jade-guiton-dd Mar 28, 2025
368edce
Update changelog to add note about breaking change to logs
jade-guiton-dd Mar 28, 2025
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
34 changes: 34 additions & 0 deletions .chloggen/metric-span-component-attributes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Use this changelog template to create an entry for release notes.

# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: 'enhancement'

# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
component: service

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Internal telemetry uses scope attributes to identify the source component

# One or more tracking issues or pull requests related to the change
issues: [12217]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext: |
All internal telemetry now includes one or more of the following instrumentation scope attributes:
- `otelcol.component.kind`
- `otelcol.component.id`
- `otelcol.pipeline.id`
- `otelcol.signal`
- `otelcol.signal.output`
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),
and identify the component instance from which the telemetry originates.
These attributes are added automatically without changes to component code.

# Optional: The change log or logs in which this entry should be included.
# e.g. '[user]' or '[user, api]'
# Include 'user' if the change is relevant to end users.
# Include 'api' if there is a change to a library API.
# Default: '[user]'
change_logs: [user, api]
5 changes: 5 additions & 0 deletions cmd/mdatagen/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,15 @@ require (
go.opentelemetry.io/collector/consumer/xconsumer v0.122.1 // indirect
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
go.opentelemetry.io/collector/internal/fanoutconsumer v0.122.1 // indirect
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
go.opentelemetry.io/collector/pdata/pprofile v0.122.1 // indirect
go.opentelemetry.io/collector/pdata/testdata v0.122.1 // indirect
go.opentelemetry.io/collector/pipeline/xpipeline v0.122.1 // indirect
go.opentelemetry.io/collector/processor/xprocessor v0.122.1 // indirect
go.opentelemetry.io/collector/receiver/xreceiver v0.122.1 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/log v0.11.0 // indirect
go.opentelemetry.io/otel/sdk v1.35.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/net v0.37.0 // indirect
Expand Down Expand Up @@ -137,3 +140,5 @@ replace go.opentelemetry.io/collector/pipeline/xpipeline => ../../pipeline/xpipe
replace go.opentelemetry.io/collector/internal/fanoutconsumer => ../../internal/fanoutconsumer

replace go.opentelemetry.io/collector/connector/xconnector => ../../connector/xconnector

replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry
4 changes: 4 additions & 0 deletions cmd/mdatagen/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions component/componentstatus/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,21 @@ require (

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
go.opentelemetry.io/collector/pdata v1.28.1 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/log v0.11.0 // indirect
go.opentelemetry.io/otel/metric v1.35.0 // indirect
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
go.opentelemetry.io/otel/trace v1.35.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
Expand All @@ -32,3 +42,7 @@ replace go.opentelemetry.io/collector/component => ../
replace go.opentelemetry.io/collector/pdata => ../../pdata

replace go.opentelemetry.io/collector/pipeline => ../../pipeline

replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry

replace go.opentelemetry.io/collector/featuregate => ../../featuregate
11 changes: 9 additions & 2 deletions component/componentstatus/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions component/componenttest/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,14 @@ require (
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/log v0.11.0 // indirect
golang.org/x/net v0.37.0 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/text v0.23.0 // indirect
Expand All @@ -36,3 +41,9 @@ require (
replace go.opentelemetry.io/collector/component => ../

replace go.opentelemetry.io/collector/pdata => ../../pdata

replace go.opentelemetry.io/collector/pipeline => ../../pipeline

replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry

replace go.opentelemetry.io/collector/featuregate => ../../featuregate
6 changes: 6 additions & 0 deletions component/componenttest/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 20 additions & 4 deletions component/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,29 @@ go 1.23.0

require (
github.com/stretchr/testify v1.10.0
go.opentelemetry.io/collector/pdata v1.28.1
go.opentelemetry.io/otel/metric v1.35.0
go.opentelemetry.io/otel/trace v1.35.0
go.opentelemetry.io/collector/internal/telemetry v0.122.1
go.uber.org/goleak v1.3.0
go.uber.org/zap v1.27.0
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
go.opentelemetry.io/collector/pdata v1.28.1 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/log v0.11.0 // indirect
go.opentelemetry.io/otel/metric v1.35.0 // indirect
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
go.opentelemetry.io/otel/trace v1.35.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/net v0.37.0 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/text v0.23.0 // indirect
Expand All @@ -32,3 +42,9 @@ retract (
v0.76.0 // Depends on retracted pdata v1.0.0-rc10 module, use v0.76.1
v0.69.0 // Release failed, use v0.69.1
)

replace go.opentelemetry.io/collector/internal/telemetry => ../internal/telemetry

replace go.opentelemetry.io/collector/pipeline => ../pipeline

replace go.opentelemetry.io/collector/featuregate => ../featuregate
11 changes: 9 additions & 2 deletions component/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 2 additions & 19 deletions component/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,8 @@
package component // import "go.opentelemetry.io/collector/component"

import (
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"

"go.opentelemetry.io/collector/pdata/pcommon"
"go.opentelemetry.io/collector/internal/telemetry"
)

// TelemetrySettings provides components with APIs to report telemetry.
type TelemetrySettings struct {
// Logger that the factory can use during creation and can pass to the created
// component to be used later as well.
Logger *zap.Logger

// TracerProvider that the factory can pass to other instrumented third-party libraries.
TracerProvider trace.TracerProvider

// MeterProvider that the factory can pass to other instrumented third-party libraries.
MeterProvider metric.MeterProvider

// Resource contains the resource attributes for the collector's telemetry.
Resource pcommon.Resource
}
type TelemetrySettings = telemetry.TelemetrySettings
16 changes: 16 additions & 0 deletions config/configauth/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,21 @@ require (

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/collector/featuregate v1.28.1 // indirect
go.opentelemetry.io/collector/internal/telemetry v0.122.1 // indirect
go.opentelemetry.io/collector/pdata v1.28.1 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/log v0.11.0 // indirect
go.opentelemetry.io/otel/metric v1.35.0 // indirect
go.opentelemetry.io/otel/sdk v1.35.0 // indirect
go.opentelemetry.io/otel/trace v1.35.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
Expand All @@ -39,3 +49,9 @@ replace go.opentelemetry.io/collector/extension => ../../extension
replace go.opentelemetry.io/collector/extension/extensionauth => ../../extension/extensionauth

replace go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest => ../../extension/extensionauth/extensionauthtest

replace go.opentelemetry.io/collector/internal/telemetry => ../../internal/telemetry

replace go.opentelemetry.io/collector/pipeline => ../../pipeline

replace go.opentelemetry.io/collector/featuregate => ../../featuregate
Loading
Loading