Skip to content

Commit 5558a3f

Browse files
authored
[*/datadog] Move datadogconnector functionality into pkg/datadog (open-telemetry#43980)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description Replaces open-telemetry#43755 Refactor datadog modules in order to expose NewConnectorFactoryForAgent method that datadog-agent repo will import to instantiate datadogconnector in DDOT. Also fix a bug in connector.
1 parent a9f45b5 commit 5558a3f

File tree

20 files changed

+554
-163
lines changed

20 files changed

+554
-163
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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: bug_fix
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. receiver/filelog)
7+
component: connector/datadog
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Datadog connector no longer stalls after a downstream component errors
11+
12+
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
13+
issues: [43980]
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+
# If your change doesn't affect end users or the exported elements of any package,
21+
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
22+
# Optional: The change log or logs in which this entry should be included.
23+
# e.g. '[user]' or '[user, api]'
24+
# Include 'user' if the change is relevant to end users.
25+
# Include 'api' if there is a change to a library API.
26+
# Default: '[user]'
27+
change_logs: [user]
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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. receiver/filelog)
7+
component: pkg/datadog
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Expose NewConnectorFactory method to instantiate the Datadog connector with injected dependencies.
11+
12+
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
13+
issues: [43980]
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+
# If your change doesn't affect end users or the exported elements of any package,
21+
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
22+
# Optional: The change log or logs in which this entry should be included.
23+
# e.g. '[user]' or '[user, api]'
24+
# Include 'user' if the change is relevant to end users.
25+
# Include 'api' if there is a change to a library API.
26+
# Default: '[user]'
27+
change_logs: [api]

connector/datadogconnector/benchmark_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ import (
1818
"github.com/open-telemetry/opentelemetry-collector-contrib/connector/datadogconnector/internal/metadata"
1919
)
2020

21+
var (
22+
testTraceID = [16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
23+
testSpanID1 = [8]byte{1, 2, 3, 4, 5, 6, 7, 8}
24+
)
25+
2126
func genTrace() ptrace.Traces {
2227
start := time.Now().Add(-1 * time.Second)
2328
end := time.Now()
@@ -40,11 +45,7 @@ func genTrace() ptrace.Traces {
4045
return traces
4146
}
4247

43-
func BenchmarkPeerTags_Native(b *testing.B) {
44-
benchmarkPeerTags(b)
45-
}
46-
47-
func benchmarkPeerTags(b *testing.B) {
48+
func BenchmarkPeerTags(b *testing.B) {
4849
cfg := NewFactory().CreateDefaultConfig().(*Config)
4950
cfg.Traces.ComputeStatsBySpanKind = true
5051
cfg.Traces.PeerTagsAggregation = true

connector/datadogconnector/config.go

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
package datadogconnector // import "github.com/open-telemetry/opentelemetry-collector-contrib/connector/datadogconnector"
55

66
import (
7-
"errors"
8-
97
"go.opentelemetry.io/collector/component"
108

119
datadogconfig "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog/config"
@@ -14,17 +12,4 @@ import (
1412
var _ component.Config = (*Config)(nil)
1513

1614
// Config defines configuration for the Datadog connector.
17-
type Config struct {
18-
// Traces defines the Traces specific configuration
19-
Traces datadogconfig.TracesConnectorConfig `mapstructure:"traces"`
20-
// prevent unkeyed literal initialization
21-
_ struct{}
22-
}
23-
24-
// Validate checks if the configuration is valid
25-
func (c *Config) Validate() error {
26-
if c.Traces.IgnoreMissingDatadogFields {
27-
return errors.New("ignore_missing_datadog_fields is not yet supported in the connector")
28-
}
29-
return c.Traces.Validate()
30-
}
15+
type Config = datadogconfig.ConnectorComponentConfig

connector/datadogconnector/factory.go

Lines changed: 3 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,11 @@
66
package datadogconnector // import "github.com/open-telemetry/opentelemetry-collector-contrib/connector/datadogconnector"
77

88
import (
9-
"context"
10-
"time"
11-
12-
"github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/metricsclient"
13-
"go.opentelemetry.io/collector/component"
149
"go.opentelemetry.io/collector/connector"
15-
"go.opentelemetry.io/collector/consumer"
1610
"go.opentelemetry.io/collector/featuregate"
1711

1812
"github.com/open-telemetry/opentelemetry-collector-contrib/connector/datadogconnector/internal/metadata"
19-
datadogconfig "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog/config"
13+
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog/apmstats"
2014
)
2115

2216
const nativeIngestFeatureGateName = "connector.datadogconnector.NativeIngest"
@@ -30,46 +24,8 @@ var NativeIngestFeatureGate = featuregate.GlobalRegistry().MustRegister(
3024
featuregate.WithRegisterToVersion("v0.143.0"),
3125
)
3226

33-
// NewFactory creates a factory for tailtracer connector.
27+
// NewFactory creates a factory for datadog connector.
3428
func NewFactory() connector.Factory {
3529
// OTel connector factory to make a factory for connectors
36-
return connector.NewFactory(
37-
metadata.Type,
38-
createDefaultConfig,
39-
connector.WithTracesToMetrics(createTracesToMetricsConnector, metadata.TracesToMetricsStability),
40-
connector.WithTracesToTraces(createTracesToTracesConnector, metadata.TracesToTracesStability))
41-
}
42-
43-
func createDefaultConfig() component.Config {
44-
return &Config{
45-
Traces: datadogconfig.TracesConnectorConfig{
46-
TracesConfig: datadogconfig.TracesConfig{
47-
IgnoreResources: []string{},
48-
PeerServiceAggregation: true,
49-
PeerTagsAggregation: true,
50-
ComputeStatsBySpanKind: true,
51-
},
52-
53-
TraceBuffer: 1000,
54-
BucketInterval: 10 * time.Second,
55-
},
56-
}
57-
}
58-
59-
// defines the consumer type of the connector
60-
// we want to consume traces and export metrics therefore define nextConsumer as metrics, consumer is the next component in the pipeline
61-
func createTracesToMetricsConnector(_ context.Context, params connector.Settings, cfg component.Config, nextConsumer consumer.Metrics) (c connector.Traces, err error) {
62-
metricsClient, err := metricsclient.InitializeMetricClient(params.MeterProvider, metricsclient.ConnectorSourceTag)
63-
if err != nil {
64-
return nil, err
65-
}
66-
c, err = newTraceToMetricConnectorNative(params.TelemetrySettings, cfg, nextConsumer, metricsClient)
67-
if err != nil {
68-
return nil, err
69-
}
70-
return c, nil
71-
}
72-
73-
func createTracesToTracesConnector(_ context.Context, params connector.Settings, _ component.Config, nextConsumer consumer.Traces) (connector.Traces, error) {
74-
return newTraceToTraceConnector(params.Logger, nextConsumer), nil
30+
return apmstats.NewConnectorFactory(metadata.Type, metadata.TracesToMetricsStability, metadata.TracesToTracesStability, nil, nil, nil)
7531
}

connector/datadogconnector/go.mod

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,6 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/connector/datad
33
go 1.24.0
44

55
require (
6-
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/metricsclient v0.73.0-rc.2
7-
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/statsprocessor v0.73.0-rc.2
8-
github.com/DataDog/datadog-agent/pkg/obfuscate v0.73.0-rc.2
9-
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes v0.73.0-rc.2
10-
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/metrics v0.73.0-rc.2
11-
github.com/DataDog/datadog-agent/pkg/proto v0.73.0-rc.2
12-
github.com/DataDog/datadog-agent/pkg/trace v0.73.0-rc.2
13-
github.com/DataDog/datadog-go/v5 v5.8.1
14-
github.com/google/go-cmp v0.7.0
156
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datadogexporter v0.139.0
167
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.139.0
178
github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.139.0
@@ -34,10 +25,6 @@ require (
3425
go.opentelemetry.io/collector/processor/batchprocessor v0.139.1-0.20251105131800-09a271914bdc
3526
go.opentelemetry.io/collector/receiver v1.45.1-0.20251105131800-09a271914bdc
3627
go.opentelemetry.io/collector/receiver/otlpreceiver v0.139.1-0.20251105131800-09a271914bdc
37-
go.opentelemetry.io/otel v1.38.0
38-
go.opentelemetry.io/otel/metric v1.38.0
39-
go.uber.org/zap v1.27.0
40-
google.golang.org/protobuf v1.36.10
4128
)
4229

4330
require (
@@ -65,6 +52,7 @@ require (
6552
github.com/DataDog/datadog-agent/comp/otelcol/logsagentpipeline/logsagentpipelineimpl v0.73.0-rc.2 // indirect
6653
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/logsagentexporter v0.73.0-rc.2 // indirect
6754
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/serializerexporter v0.73.0-rc.2 // indirect
55+
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/metricsclient v0.73.0-rc.2 // indirect
6856
github.com/DataDog/datadog-agent/comp/serializer/logscompression v0.73.0-rc.2 // indirect
6957
github.com/DataDog/datadog-agent/comp/serializer/metricscompression v0.73.0-rc.2 // indirect
7058
github.com/DataDog/datadog-agent/comp/trace/compression/def v0.73.0-rc.2 // indirect
@@ -95,18 +83,23 @@ require (
9583
github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.73.0-rc.2 // indirect
9684
github.com/DataDog/datadog-agent/pkg/logs/types v0.73.0-rc.2 // indirect
9785
github.com/DataDog/datadog-agent/pkg/metrics v0.73.0-rc.2 // indirect
86+
github.com/DataDog/datadog-agent/pkg/obfuscate v0.73.0-rc.2 // indirect
9887
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata v0.73.0-rc.2 // indirect
88+
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes v0.73.0-rc.2 // indirect
9989
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/logs v0.73.0-rc.2 // indirect
90+
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/metrics v0.73.0-rc.2 // indirect
10091
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/rum v0.73.0-rc.2 // indirect
10192
github.com/DataDog/datadog-agent/pkg/orchestrator/model v0.73.0-rc.2 // indirect
10293
github.com/DataDog/datadog-agent/pkg/process/util/api v0.73.0-rc.2 // indirect
94+
github.com/DataDog/datadog-agent/pkg/proto v0.73.0-rc.2 // indirect
10395
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.73.0-rc.2 // indirect
10496
github.com/DataDog/datadog-agent/pkg/serializer v0.73.0-rc.2 // indirect
10597
github.com/DataDog/datadog-agent/pkg/status/health v0.73.0-rc.2 // indirect
10698
github.com/DataDog/datadog-agent/pkg/tagger/types v0.73.0-rc.2 // indirect
10799
github.com/DataDog/datadog-agent/pkg/tagset v0.73.0-rc.2 // indirect
108100
github.com/DataDog/datadog-agent/pkg/telemetry v0.73.0-rc.2 // indirect
109101
github.com/DataDog/datadog-agent/pkg/template v0.73.0-rc.2 // indirect
102+
github.com/DataDog/datadog-agent/pkg/trace v0.73.0-rc.2 // indirect
110103
github.com/DataDog/datadog-agent/pkg/util/backoff v0.73.0-rc.2 // indirect
111104
github.com/DataDog/datadog-agent/pkg/util/buf v0.73.0-rc.2 // indirect
112105
github.com/DataDog/datadog-agent/pkg/util/cgroups v0.73.0-rc.2 // indirect
@@ -132,6 +125,7 @@ require (
132125
github.com/DataDog/datadog-agent/pkg/util/winutil v0.73.0-rc.2 // indirect
133126
github.com/DataDog/datadog-agent/pkg/version v0.73.0-rc.2 // indirect
134127
github.com/DataDog/datadog-api-client-go/v2 v2.49.0 // indirect
128+
github.com/DataDog/datadog-go/v5 v5.8.1 // indirect
135129
github.com/DataDog/go-sqllexer v0.1.9 // indirect
136130
github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect
137131
github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee // indirect
@@ -192,6 +186,7 @@ require (
192186
github.com/golang/protobuf v1.5.4 // indirect
193187
github.com/golang/snappy v1.0.0 // indirect
194188
github.com/google/gnostic-models v0.7.0 // indirect
189+
github.com/google/go-cmp v0.7.0 // indirect
195190
github.com/google/go-tpm v0.9.6 // indirect
196191
github.com/google/uuid v1.6.0 // indirect
197192
github.com/gorilla/mux v1.8.1 // indirect
@@ -321,6 +316,7 @@ require (
321316
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect
322317
go.opentelemetry.io/contrib/otelconf v0.18.0 // indirect
323318
go.opentelemetry.io/contrib/propagators/b3 v1.38.0 // indirect
319+
go.opentelemetry.io/otel v1.38.0 // indirect
324320
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 // indirect
325321
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 // indirect
326322
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect
@@ -333,6 +329,7 @@ require (
333329
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0 // indirect
334330
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 // indirect
335331
go.opentelemetry.io/otel/log v0.14.0 // indirect
332+
go.opentelemetry.io/otel/metric v1.38.0 // indirect
336333
go.opentelemetry.io/otel/sdk v1.38.0 // indirect
337334
go.opentelemetry.io/otel/sdk/log v0.14.0 // indirect
338335
go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect
@@ -342,6 +339,7 @@ require (
342339
go.uber.org/dig v1.19.0 // indirect
343340
go.uber.org/fx v1.24.0 // indirect
344341
go.uber.org/multierr v1.11.0 // indirect
342+
go.uber.org/zap v1.27.0 // indirect
345343
go.yaml.in/yaml/v2 v2.4.3 // indirect
346344
go.yaml.in/yaml/v3 v3.0.4 // indirect
347345
golang.org/x/crypto v0.43.0 // indirect
@@ -357,6 +355,7 @@ require (
357355
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect
358356
google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect
359357
google.golang.org/grpc v1.76.0 // indirect
358+
google.golang.org/protobuf v1.36.10 // indirect
360359
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
361360
gopkg.in/inf.v0 v0.9.1 // indirect
362361
gopkg.in/ini.v1 v1.67.0 // indirect

connector/datadogconnector/go.sum

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

exporter/datadogexporter/integrationtest/go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ require (
6363
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/logsagentexporter v0.73.0-rc.2 // indirect
6464
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/serializerexporter v0.73.0-rc.2 // indirect
6565
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/metricsclient v0.73.0-rc.2 // indirect
66-
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/statsprocessor v0.73.0-rc.2 // indirect
6766
github.com/DataDog/datadog-agent/comp/serializer/logscompression v0.73.0-rc.2 // indirect
6867
github.com/DataDog/datadog-agent/comp/serializer/metricscompression v0.73.0-rc.2 // indirect
6968
github.com/DataDog/datadog-agent/comp/trace/compression/def v0.73.0-rc.2 // indirect

exporter/datadogexporter/integrationtest/go.sum

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

internal/datadog/e2e/go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ require (
6262
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/logsagentexporter v0.73.0-rc.2 // indirect
6363
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/serializerexporter v0.73.0-rc.2 // indirect
6464
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/metricsclient v0.73.0-rc.2 // indirect
65-
github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/statsprocessor v0.73.0-rc.2 // indirect
6665
github.com/DataDog/datadog-agent/comp/serializer/logscompression v0.73.0-rc.2 // indirect
6766
github.com/DataDog/datadog-agent/comp/serializer/metricscompression v0.73.0-rc.2 // indirect
6867
github.com/DataDog/datadog-agent/comp/trace/compression/def v0.73.0-rc.2 // indirect

0 commit comments

Comments
 (0)