Skip to content

Commit

Permalink
[exporter/datadogexporter] Add support for custom container tags
Browse files Browse the repository at this point in the history
This PR updates `github.com/DataDog/datadog-agent/pkg/trace` and `github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes`. This brings in the following PRs: DataDog/opentelemetry-mapping-go#193, DataDog/opentelemetry-mapping-go#174 which add support for custom container tags (for traces, metrics and logs) via resource attributes prefixed by `datadog.container.tag.*`.

This PR also brings a couple other changes for traces which are reflected in the changelog:
- Stop extracting container tags from span attributes, but only extract from resource attributes. The semantic conventions we are using to extract the container tags are meant for resource attributes, so we should only check resource attributes.
- Stop setting the DD Format container tags as span tags, but only set these in the dedicated container tag (_dd.container.tag). We currently set the DD mapped container tags both as span tag, and in the dedicated container tag `_dd.tags.container`. This should only be set in the dedicated container tag.

The update to opentelemetry-mapping-go also brings in this change: DataDog/opentelemetry-mapping-go#174, which adds support for `host.cpu.*` attributes.
  • Loading branch information
mackjmr committed Nov 13, 2023
1 parent 770f1c0 commit ae3f270
Show file tree
Hide file tree
Showing 42 changed files with 370 additions and 275 deletions.
27 changes: 27 additions & 0 deletions .chloggen/mackjmr_fix-container-tags-resource-attributes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Use this changelog template to create an entry for release notes.

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

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

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Only extract DD container tags from resource attributes. Previously, container tags were also extracted from span attributes.

# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
issues: []

# (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:

# If your change doesn't affect end users or the exported elements of any package,
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
# 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: []
27 changes: 27 additions & 0 deletions .chloggen/mackjmr_fix-container-tags-span-tags.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Use this changelog template to create an entry for release notes.

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

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

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Only add container tags in dedicated container tag section. Previously, container tags were also added as span tags. Container tags will now only be accessible via the span container tab, and not as span tags.

# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
issues: []

# (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:

# If your change doesn't affect end users or the exported elements of any package,
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
# 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: []
27 changes: 27 additions & 0 deletions .chloggen/mackjmr_host-cpu-attributes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 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. filelogreceiver)
component: datadogexporter

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Add support for host.cpu attributes.

# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
issues: []

# (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:

# If your change doesn't affect end users or the exported elements of any package,
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
# 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: []
27 changes: 27 additions & 0 deletions .chloggen/mackjmr_update-mapping-go-and-package-trace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 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. filelogreceiver)
component: datadogexporter

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Add support for custom container tags via resource attributes prefixed by `datadog.container.tag.*`.

# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
issues: []

# (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:

# If your change doesn't affect end users or the exported elements of any package,
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
# 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: []
39 changes: 20 additions & 19 deletions cmd/configschema/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.8.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect
github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.8.0 // indirect
github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.8.1 // indirect
github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/metrics v0.8.0 // indirect
github.com/gocql/gocql v1.3.2 // indirect
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect
Expand Down Expand Up @@ -176,15 +176,15 @@ require (
require (
bitbucket.org/atlassian/go-asap/v2 v2.6.0 // indirect
cloud.google.com/go v0.110.10 // indirect
cloud.google.com/go/compute v1.23.1 // indirect
cloud.google.com/go/compute v1.23.2 // indirect
cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect
cloud.google.com/go/iam v1.1.3 // indirect
cloud.google.com/go/iam v1.1.4 // indirect
cloud.google.com/go/logging v1.8.1 // indirect
cloud.google.com/go/longrunning v0.5.2 // indirect
cloud.google.com/go/monitoring v1.16.1 // indirect
cloud.google.com/go/longrunning v0.5.3 // indirect
cloud.google.com/go/monitoring v1.16.2 // indirect
cloud.google.com/go/pubsub v1.33.0 // indirect
cloud.google.com/go/spanner v1.51.0 // indirect
cloud.google.com/go/trace v1.10.2 // indirect
cloud.google.com/go/trace v1.10.3 // indirect
code.cloudfoundry.org/clock v1.0.0 // indirect
code.cloudfoundry.org/go-diodes v0.0.0-20211115184647-b584dd5df32c // indirect
code.cloudfoundry.org/go-loggregator v7.4.0+incompatible // indirect
Expand Down Expand Up @@ -214,16 +214,17 @@ require (
github.com/ClickHouse/ch-go v0.58.2 // indirect
github.com/ClickHouse/clickhouse-go/v2 v2.15.0 // indirect
github.com/DataDog/agent-payload/v5 v5.0.89 // indirect
github.com/DataDog/datadog-agent/pkg/obfuscate v0.49.0-rc.2 // indirect
github.com/DataDog/datadog-agent/pkg/proto v0.50.0-devel // indirect
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.49.0-rc.2 // indirect
github.com/DataDog/datadog-agent/pkg/trace v0.50.0-devel.0.20231030140030-aa8a206e6ac7 // indirect
github.com/DataDog/datadog-agent/pkg/util/cgroups v0.49.0-rc.2 // indirect
github.com/DataDog/datadog-agent/pkg/util/log v0.49.0-rc.2 // indirect
github.com/DataDog/datadog-agent/pkg/util/pointer v0.49.0-rc.2 // indirect
github.com/DataDog/datadog-agent/pkg/util/scrubber v0.49.0-rc.2 // indirect
github.com/DataDog/datadog-agent/pkg/obfuscate v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-agent/pkg/proto v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-agent/pkg/trace v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-agent/pkg/util/cgroups v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-agent/pkg/util/log v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-agent/pkg/util/pointer v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-agent/pkg/util/scrubber v0.50.0-rc.1 // indirect
github.com/DataDog/datadog-api-client-go/v2 v2.18.0 // indirect
github.com/DataDog/datadog-go/v5 v5.1.1 // indirect
github.com/DataDog/go-sqllexer v0.0.8 // indirect
github.com/DataDog/go-tuf v1.0.2-0.5.2 // indirect
github.com/DataDog/gohai v0.0.0-20220718130825-1776f9beb9cc // indirect
github.com/DataDog/opentelemetry-mapping-go/pkg/inframetadata v0.8.0 // indirect
Expand Down Expand Up @@ -661,22 +662,22 @@ require (
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/crypto v0.14.0 // indirect
golang.org/x/crypto v0.15.0 // indirect
golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/net v0.18.0 // indirect
golang.org/x/oauth2 v0.13.0 // indirect
golang.org/x/sync v0.5.0 // indirect
golang.org/x/sys v0.14.0 // indirect
golang.org/x/term v0.13.0 // indirect
golang.org/x/term v0.14.0 // indirect
golang.org/x/time v0.4.0 // indirect
golang.org/x/tools v0.14.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
gonum.org/v1/gonum v0.14.0 // indirect
google.golang.org/api v0.150.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
Expand Down
Loading

0 comments on commit ae3f270

Please sign in to comment.