chore(otel/netdataexporter): add exporter module skeleton (#20171)
Ilya Mashchenko committed
Apr 24, 2025 at 14:41 UTC
60243fb49662cb83c5f6796e5233cc92e287af71
11 files changed
+480
src/go/otel-collector/builder-config.yaml
+2
@@ -16,6 +16,8 @@ exporters:
16
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.124.0
17
- gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.124.0
18
- gomod: github.com/netdata/netdata/otel-collector/exporter/journaldexporter v0.0.0
19
+ - gomod: github.com/netdata/netdata/otel-collector/exporter/netdataexporter v0.0.0
20
21
replaces:
22
- github.com/netdata/netdata/otel-collector/exporter/journaldexporter => ../exporter/journaldexporter
23
+ - github.com/netdata/netdata/otel-collector/exporter/netdataexporter => ../exporter/netdataexporter
src/go/otel-collector/exporter/netdataexporter/config.go
new
+4
@@ -0,0 +1,4 @@
1
+package netdataexporter
2
+
3
+type Config struct {
4
+}
src/go/otel-collector/exporter/netdataexporter/doc.go
new
+3
@@ -0,0 +1,3 @@
1
+//go:generate mdatagen metadata.yaml
2
+
3
+package netdataexporter
src/go/otel-collector/exporter/netdataexporter/exporter.go
new
+33
@@ -0,0 +1,33 @@
1
+package netdataexporter
2
+
3
+import (
4
+ "context"
5
+
6
+ "go.opentelemetry.io/collector/component"
7
+ "go.opentelemetry.io/collector/pdata/pmetric"
8
+ "go.uber.org/zap"
9
+)
10
+
11
+type netdataExporter struct {
12
+ log *zap.Logger
13
+ conf *Config
14
+}
15
+
16
+func newNetdataExporter(cfg component.Config, logger *zap.Logger) *netdataExporter {
17
+ return &netdataExporter{
18
+ log: logger,
19
+ conf: cfg.(*Config),
20
+ }
21
+}
22
+
23
+func (e *netdataExporter) consumeMetrics(ctx context.Context, pm pmetric.Metrics) error {
24
+ return nil
25
+}
26
+
27
+func (e *netdataExporter) Start(_ context.Context, _ component.Host) error {
28
+ return nil
29
+}
30
+
31
+func (e *netdataExporter) Shutdown(context.Context) error {
32
+ return nil
33
+}
src/go/otel-collector/exporter/netdataexporter/factory.go
new
+39
@@ -0,0 +1,39 @@
1
+package netdataexporter
2
+
3
+import (
4
+ "context"
5
+
6
+ "go.opentelemetry.io/collector/component"
7
+ "go.opentelemetry.io/collector/consumer"
8
+ "go.opentelemetry.io/collector/exporter"
9
+ "go.opentelemetry.io/collector/exporter/exporterhelper"
10
+ "go.opentelemetry.io/collector/exporter/xexporter"
11
+
12
+ "github.com/netdata/netdata/otel-collector/exporter/netdataexporter/internal/metadata"
13
+)
14
+
15
+func NewFactory() exporter.Factory {
16
+ return xexporter.NewFactory(
17
+ metadata.Type,
18
+ createDefaultConfig,
19
+ xexporter.WithMetrics(createMetricsExporter, metadata.MetricsStability),
20
+ )
21
+}
22
+
23
+func createDefaultConfig() component.Config {
24
+ return &Config{}
25
+}
26
+
27
+func createMetricsExporter(ctx context.Context, set exporter.Settings, cfg component.Config) (exporter.Metrics, error) {
28
+ exp := newNetdataExporter(cfg, set.Logger)
29
+
30
+ return exporterhelper.NewMetrics(
31
+ ctx,
32
+ set,
33
+ cfg,
34
+ exp.consumeMetrics,
35
+ exporterhelper.WithStart(exp.Start),
36
+ exporterhelper.WithShutdown(exp.Shutdown),
37
+ exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}),
38
+ )
39
+}
src/go/otel-collector/exporter/netdataexporter/generated_component_test.go
new
+138
@@ -0,0 +1,138 @@
1
+// Code generated by mdatagen. DO NOT EDIT.
2
+
3
+package netdataexporter
4
+
5
+import (
6
+ "context"
7
+ "testing"
8
+ "time"
9
+
10
+ "github.com/stretchr/testify/require"
11
+ "go.opentelemetry.io/collector/component"
12
+ "go.opentelemetry.io/collector/component/componenttest"
13
+ "go.opentelemetry.io/collector/confmap/confmaptest"
14
+ "go.opentelemetry.io/collector/exporter"
15
+ "go.opentelemetry.io/collector/exporter/exportertest"
16
+ "go.opentelemetry.io/collector/pdata/pcommon"
17
+ "go.opentelemetry.io/collector/pdata/plog"
18
+ "go.opentelemetry.io/collector/pdata/pmetric"
19
+ "go.opentelemetry.io/collector/pdata/ptrace"
20
+)
21
+
22
+var typ = component.MustNewType("netdataexporter")
23
+
24
+func TestComponentFactoryType(t *testing.T) {
25
+ require.Equal(t, typ, NewFactory().Type())
26
+}
27
+
28
+func TestComponentConfigStruct(t *testing.T) {
29
+ require.NoError(t, componenttest.CheckConfigStruct(NewFactory().CreateDefaultConfig()))
30
+}
31
+
32
+func TestComponentLifecycle(t *testing.T) {
33
+ factory := NewFactory()
34
+
35
+ tests := []struct {
36
+ createFn func(ctx context.Context, set exporter.Settings, cfg component.Config) (component.Component, error)
37
+ name string
38
+ }{
39
+
40
+ {
41
+ name: "metrics",
42
+ createFn: func(ctx context.Context, set exporter.Settings, cfg component.Config) (component.Component, error) {
43
+ return factory.CreateMetrics(ctx, set, cfg)
44
+ },
45
+ },
46
+ }
47
+
48
+ cm, err := confmaptest.LoadConf("metadata.yaml")
49
+ require.NoError(t, err)
50
+ cfg := factory.CreateDefaultConfig()
51
+ sub, err := cm.Sub("tests::config")
52
+ require.NoError(t, err)
53
+ require.NoError(t, sub.Unmarshal(&cfg))
54
+
55
+ for _, tt := range tests {
56
+ t.Run(tt.name+"-shutdown", func(t *testing.T) {
57
+ c, err := tt.createFn(context.Background(), exportertest.NewNopSettings(typ), cfg)
58
+ require.NoError(t, err)
59
+ err = c.Shutdown(context.Background())
60
+ require.NoError(t, err)
61
+ })
62
+ t.Run(tt.name+"-lifecycle", func(t *testing.T) {
63
+ c, err := tt.createFn(context.Background(), exportertest.NewNopSettings(typ), cfg)
64
+ require.NoError(t, err)
65
+ host := componenttest.NewNopHost()
66
+ err = c.Start(context.Background(), host)
67
+ require.NoError(t, err)
68
+ require.NotPanics(t, func() {
69
+ switch tt.name {
70
+ case "logs":
71
+ e, ok := c.(exporter.Logs)
72
+ require.True(t, ok)
73
+ logs := generateLifecycleTestLogs()
74
+ if !e.Capabilities().MutatesData {
75
+ logs.MarkReadOnly()
76
+ }
77
+ err = e.ConsumeLogs(context.Background(), logs)
78
+ case "metrics":
79
+ e, ok := c.(exporter.Metrics)
80
+ require.True(t, ok)
81
+ metrics := generateLifecycleTestMetrics()
82
+ if !e.Capabilities().MutatesData {
83
+ metrics.MarkReadOnly()
84
+ }
85
+ err = e.ConsumeMetrics(context.Background(), metrics)
86
+ case "traces":
87
+ e, ok := c.(exporter.Traces)
88
+ require.True(t, ok)
89
+ traces := generateLifecycleTestTraces()
90
+ if !e.Capabilities().MutatesData {
91
+ traces.MarkReadOnly()
92
+ }
93
+ err = e.ConsumeTraces(context.Background(), traces)
94
+ }
95
+ })
96
+
97
+ require.NoError(t, err)
98
+
99
+ err = c.Shutdown(context.Background())
100
+ require.NoError(t, err)
101
+ })
102
+ }
103
+}
104
+
105
+func generateLifecycleTestLogs() plog.Logs {
106
+ logs := plog.NewLogs()
107
+ rl := logs.ResourceLogs().AppendEmpty()
108
+ rl.Resource().Attributes().PutStr("resource", "R1")
109
+ l := rl.ScopeLogs().AppendEmpty().LogRecords().AppendEmpty()
110
+ l.Body().SetStr("test log message")
111
+ l.SetTimestamp(pcommon.NewTimestampFromTime(time.Now()))
112
+ return logs
113
+}
114
+
115
+func generateLifecycleTestMetrics() pmetric.Metrics {
116
+ metrics := pmetric.NewMetrics()
117
+ rm := metrics.ResourceMetrics().AppendEmpty()
118
+ rm.Resource().Attributes().PutStr("resource", "R1")
119
+ m := rm.ScopeMetrics().AppendEmpty().Metrics().AppendEmpty()
120
+ m.SetName("test_metric")
121
+ dp := m.SetEmptyGauge().DataPoints().AppendEmpty()
122
+ dp.Attributes().PutStr("test_attr", "value_1")
123
+ dp.SetIntValue(123)
124
+ dp.SetTimestamp(pcommon.NewTimestampFromTime(time.Now()))
125
+ return metrics
126
+}
127
+
128
+func generateLifecycleTestTraces() ptrace.Traces {
129
+ traces := ptrace.NewTraces()
130
+ rs := traces.ResourceSpans().AppendEmpty()
131
+ rs.Resource().Attributes().PutStr("resource", "R1")
132
+ span := rs.ScopeSpans().AppendEmpty().Spans().AppendEmpty()
133
+ span.Attributes().PutStr("test_attr", "value_1")
134
+ span.SetName("test_span")
135
+ span.SetStartTimestamp(pcommon.NewTimestampFromTime(time.Now().Add(-1 * time.Second)))
136
+ span.SetEndTimestamp(pcommon.NewTimestampFromTime(time.Now()))
137
+ return traces
138
+}
src/go/otel-collector/exporter/netdataexporter/generated_package_test.go
new
+12
@@ -0,0 +1,12 @@
1
+// Code generated by mdatagen. DO NOT EDIT.
2
+
3
+package netdataexporter
4
+
5
+import (
6
+ "go.uber.org/goleak"
7
+ "testing"
8
+)
9
+
10
+func TestMain(m *testing.M) {
11
+ goleak.VerifyTestMain(m)
12
+}
src/go/otel-collector/exporter/netdataexporter/go.mod
new
+62
@@ -0,0 +1,62 @@
1
+module github.com/netdata/netdata/otel-collector/exporter/netdataexporter
2
+
3
+go 1.24.2
4
+
5
+require (
6
+ github.com/stretchr/testify v1.10.0
7
+ go.opentelemetry.io/collector/component v1.30.0
8
+ go.opentelemetry.io/collector/component/componenttest v0.124.0
9
+ go.opentelemetry.io/collector/confmap v1.30.0
10
+ go.opentelemetry.io/collector/exporter v0.124.0
11
+ go.opentelemetry.io/collector/exporter/exportertest v0.124.0
12
+ go.opentelemetry.io/collector/pdata v1.30.0
13
+ go.uber.org/goleak v1.3.0
14
+)
15
+
16
+require (
17
+ github.com/davecgh/go-spew v1.1.1 // indirect
18
+ github.com/go-logr/logr v1.4.2 // indirect
19
+ github.com/go-logr/stdr v1.2.2 // indirect
20
+ github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
21
+ github.com/gogo/protobuf v1.3.2 // indirect
22
+ github.com/google/uuid v1.6.0 // indirect
23
+ github.com/hashicorp/go-version v1.7.0 // indirect
24
+ github.com/json-iterator/go v1.1.12 // indirect
25
+ github.com/knadh/koanf/maps v0.1.2 // indirect
26
+ github.com/knadh/koanf/providers/confmap v0.1.0 // indirect
27
+ github.com/knadh/koanf/v2 v2.1.2 // indirect
28
+ github.com/mitchellh/copystructure v1.2.0 // indirect
29
+ github.com/mitchellh/reflectwalk v1.0.2 // indirect
30
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
31
+ github.com/modern-go/reflect2 v1.0.2 // indirect
32
+ github.com/pmezard/go-difflib v1.0.0 // indirect
33
+ go.opentelemetry.io/auto/sdk v1.1.0 // indirect
34
+ go.opentelemetry.io/collector/consumer v1.30.0 // indirect
35
+ go.opentelemetry.io/collector/consumer/consumererror v0.124.0 // indirect
36
+ go.opentelemetry.io/collector/consumer/consumertest v0.124.0 // indirect
37
+ go.opentelemetry.io/collector/consumer/xconsumer v0.124.0 // indirect
38
+ go.opentelemetry.io/collector/exporter/xexporter v0.124.0 // indirect
39
+ go.opentelemetry.io/collector/featuregate v1.30.0 // indirect
40
+ go.opentelemetry.io/collector/internal/telemetry v0.124.0 // indirect
41
+ go.opentelemetry.io/collector/pdata/pprofile v0.124.0 // indirect
42
+ go.opentelemetry.io/collector/pipeline v0.124.0 // indirect
43
+ go.opentelemetry.io/collector/receiver v1.30.0 // indirect
44
+ go.opentelemetry.io/collector/receiver/receivertest v0.124.0 // indirect
45
+ go.opentelemetry.io/collector/receiver/xreceiver v0.124.0 // indirect
46
+ go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
47
+ go.opentelemetry.io/otel v1.35.0 // indirect
48
+ go.opentelemetry.io/otel/log v0.11.0 // indirect
49
+ go.opentelemetry.io/otel/metric v1.35.0 // indirect
50
+ go.opentelemetry.io/otel/sdk v1.35.0 // indirect
51
+ go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect
52
+ go.opentelemetry.io/otel/trace v1.35.0 // indirect
53
+ go.uber.org/multierr v1.11.0 // indirect
54
+ go.uber.org/zap v1.27.0 // indirect
55
+ golang.org/x/net v0.37.0 // indirect
56
+ golang.org/x/sys v0.31.0 // indirect
57
+ golang.org/x/text v0.23.0 // indirect
58
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
59
+ google.golang.org/grpc v1.71.1 // indirect
60
+ google.golang.org/protobuf v1.36.6 // indirect
61
+ gopkg.in/yaml.v3 v3.0.1 // indirect
62
+)
src/go/otel-collector/exporter/netdataexporter/go.sum
new
+164
@@ -0,0 +1,164 @@
1
+github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8=
2
+github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
3
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
5
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
7
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
8
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
9
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
10
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
11
+github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
12
+github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
13
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
14
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
15
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
16
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
17
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
18
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
19
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
20
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
21
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
22
+github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
23
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
24
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
25
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
26
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
27
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
28
+github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo=
29
+github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI=
30
+github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU=
31
+github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU=
32
+github.com/knadh/koanf/v2 v2.1.2 h1:I2rtLRqXRy1p01m/utEtpZSSA6dcJbgGVuE27kW2PzQ=
33
+github.com/knadh/koanf/v2 v2.1.2/go.mod h1:Gphfaen0q1Fc1HTgJgSTC4oRX9R2R5ErYMZJy8fLJBo=
34
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
35
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
36
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
37
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
38
+github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
39
+github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
40
+github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
41
+github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
42
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
43
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
44
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
45
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
46
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
47
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
48
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
49
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
50
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
51
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
52
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
53
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
54
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
55
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
56
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
57
+go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
58
+go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
59
+go.opentelemetry.io/collector/component v1.30.0 h1:HXjqBHaQ47/EEuWdnkjr4Y3kRWvmyWIDvqa1Q262Fls=
60
+go.opentelemetry.io/collector/component v1.30.0/go.mod h1:vfM9kN+BM6oHBXWibquiprz8CVawxd4/aYy3nbhme3E=
61
+go.opentelemetry.io/collector/component/componenttest v0.124.0 h1:Wsc+DmDrWTFs/aEyjDA3slNwV+h/0NOyIR5Aywvr6Zw=
62
+go.opentelemetry.io/collector/component/componenttest v0.124.0/go.mod h1:NQ4ATOzMFc7QA06B993tq8o27DR0cu/JR/zK7slGJ3E=
63
+go.opentelemetry.io/collector/config/configretry v1.30.0 h1:sapni1tymwNiuI0PjqlRR5CvYxIQYT8tyjQGVJDkVPM=
64
+go.opentelemetry.io/collector/config/configretry v1.30.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ=
65
+go.opentelemetry.io/collector/confmap v1.30.0 h1:Y0MXhjQCdMyJN9xZMWWdNPWs6ncMVf7YVnyAEN2dAcM=
66
+go.opentelemetry.io/collector/confmap v1.30.0/go.mod h1:9DdThVDIC3VsdtTb7DgT+HwusWOocoqDkd/TErEtQgA=
67
+go.opentelemetry.io/collector/consumer v1.30.0 h1:Nn6kFTH+EJbv13E0W+sNvWrTgbiFCRv8f6DaA2F1DQs=
68
+go.opentelemetry.io/collector/consumer v1.30.0/go.mod h1:edRyfk61ugdhCQ93PBLRZfYMVWjdMPpKP8z5QLyESf0=
69
+go.opentelemetry.io/collector/consumer/consumererror v0.124.0 h1:OmeJex0C8jcwyILG+eJIGDe6rGaR15fip+Rj3XyMTRY=
70
+go.opentelemetry.io/collector/consumer/consumererror v0.124.0/go.mod h1:A6WL/E70dUh9oFdQsL+aVYGL+d6UqiAhi7rIW/6gvDM=
71
+go.opentelemetry.io/collector/consumer/consumertest v0.124.0 h1:2arChG4RPrHW3lfVWlK/KDF7Y7qkUm/YAiBXh8oTue0=
72
+go.opentelemetry.io/collector/consumer/consumertest v0.124.0/go.mod h1:Hlu+EXbINHxVAyIT1baKO2d0j5odR3fLlLAiaP+JqQg=
73
+go.opentelemetry.io/collector/consumer/xconsumer v0.124.0 h1:/cut96EWVNoz6lIeGI9+EzS6UClMtnZkx5YIpkD0Xe0=
74
+go.opentelemetry.io/collector/consumer/xconsumer v0.124.0/go.mod h1:fHH/MpzFCRNk/4foiYE6BoXQCAMf5sJTO35uvzVrrd4=
75
+go.opentelemetry.io/collector/exporter v0.124.0 h1:ii+9tU/iSrPl4+YDvqFVflksA9hUYEzwMIpmvP4JZ8w=
76
+go.opentelemetry.io/collector/exporter v0.124.0/go.mod h1:Q8tOEwFu3CN8VGjE4H2yZcCRG9Q60foQIyZGKPD/jig=
77
+go.opentelemetry.io/collector/exporter/exportertest v0.124.0 h1:IOxA/4CiVWGPlmA0JofK6W4DzvwW1YJes09r6osluIE=
78
+go.opentelemetry.io/collector/exporter/exportertest v0.124.0/go.mod h1:2EmU8IwVJV79MmFBFFW1LCN0Ob2UZsEkX/mSUB06lbI=
79
+go.opentelemetry.io/collector/exporter/xexporter v0.124.0 h1:Itfn2+F4ki8hObOtPCecWBwGpuxakUYSsTwwkB5iUns=
80
+go.opentelemetry.io/collector/exporter/xexporter v0.124.0/go.mod h1:dNK/PPY02gA9BawIKHyVk8kIFdYvqVZ2A+LlMZucIPY=
81
+go.opentelemetry.io/collector/extension v1.30.0 h1:AJqntAp1p40Q1az2Vze3OHiMURq56KWnUxaLzs1ghaA=
82
+go.opentelemetry.io/collector/extension v1.30.0/go.mod h1:a21WpypFQp9x0Go7yMOknYmIKvdIoWGzjz+h1WMjzLk=
83
+go.opentelemetry.io/collector/extension/xextension v0.124.0 h1:Yzf11HXaiMHfS50Zy/CYKfJjoi+/w/tgRZdDQ2VIdW0=
84
+go.opentelemetry.io/collector/extension/xextension v0.124.0/go.mod h1:GeM0aSgwVSba3Bvvspuy1E+1aa/Q1CDxoK+e/xcJFVg=
85
+go.opentelemetry.io/collector/featuregate v1.30.0 h1:mx7+iP/FQnY7KO8qw/xE3Qd1MQkWcU8VgcqLNrJ8EU8=
86
+go.opentelemetry.io/collector/featuregate v1.30.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc=
87
+go.opentelemetry.io/collector/internal/telemetry v0.124.0 h1:kzd1/ZYhLj4bt2pDB529mL4rIRrRacemXodFNxfhdWk=
88
+go.opentelemetry.io/collector/internal/telemetry v0.124.0/go.mod h1:ZjXjqV0dJ+6D4XGhTOxg/WHjnhdmXsmwmUSgALea66Y=
89
+go.opentelemetry.io/collector/pdata v1.30.0 h1:j3jyq9um436r6WzWySzexP2nLnFdmL5uVBYAlyr9nDM=
90
+go.opentelemetry.io/collector/pdata v1.30.0/go.mod h1:0Bxu1ktuj4wE7PIASNSvd0SdBscQ1PLtYasymJ13/Cs=
91
+go.opentelemetry.io/collector/pdata/pprofile v0.124.0 h1:ZjL9wKqzP4BHj0/F1jfGxs1Va8B7xmYayipZeNVoWJE=
92
+go.opentelemetry.io/collector/pdata/pprofile v0.124.0/go.mod h1:1EN3Gw5LSI4fSVma/Yfv/6nqeuYgRTm1/kmG5nE5Oyo=
93
+go.opentelemetry.io/collector/pdata/testdata v0.124.0 h1:vY+pWG7CQfzzGSB5+zGYHQOltRQr59Ek9QiPe+rI+NY=
94
+go.opentelemetry.io/collector/pdata/testdata v0.124.0/go.mod h1:lNH48lGhGv4CYk27fJecpsR1zYHmZjKgNrAprwjym0o=
95
+go.opentelemetry.io/collector/pipeline v0.124.0 h1:hKvhDyH2GPnNO8LGL34ugf36sY7EOXPjBvlrvBhsOdw=
96
+go.opentelemetry.io/collector/pipeline v0.124.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4=
97
+go.opentelemetry.io/collector/receiver v1.30.0 h1:XbgU4yT3Ld+hL9+jHcD/Kctcr3gXjpiFxKO+50pSayg=
98
+go.opentelemetry.io/collector/receiver v1.30.0/go.mod h1:U3cApz9PHiRMgN0WkZaz4o8mvj1+cVQYsyj2Nl1v3FQ=
99
+go.opentelemetry.io/collector/receiver/receivertest v0.124.0 h1:mx0290aXAo+wfjm4NgbKUodjT5SbS306zmk+AeqeVxE=
100
+go.opentelemetry.io/collector/receiver/receivertest v0.124.0/go.mod h1:3RpopRmIzx5T4zTStHJC0HHfd8YFWm8e9bia1HiuDtY=
101
+go.opentelemetry.io/collector/receiver/xreceiver v0.124.0 h1:YigTUKk8p/aIfqaT0ST7teT9KbLThWD5n2km83byftw=
102
+go.opentelemetry.io/collector/receiver/xreceiver v0.124.0/go.mod h1:NkTpmpAEDT17Dko4gpHUnRztrSkdSd6B0+Y4gfuCWIA=
103
+go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 h1:ojdSRDvjrnm30beHOmwsSvLpoRF40MlwNCA+Oo93kXU=
104
+go.opentelemetry.io/contrib/bridges/otelzap v0.10.0/go.mod h1:oTTm4g7NEtHSV2i/0FeVdPaPgUIZPfQkFbq0vbzqnv0=
105
+go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
106
+go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
107
+go.opentelemetry.io/otel/log v0.11.0 h1:c24Hrlk5WJ8JWcwbQxdBqxZdOK7PcP/LFtOtwpDTe3Y=
108
+go.opentelemetry.io/otel/log v0.11.0/go.mod h1:U/sxQ83FPmT29trrifhQg+Zj2lo1/IPN1PF6RTFqdwc=
109
+go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
110
+go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
111
+go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
112
+go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
113
+go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
114
+go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
115
+go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
116
+go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
117
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
118
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
119
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
120
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
121
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
122
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
123
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
124
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
125
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
126
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
127
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
128
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
129
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
130
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
131
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
132
+golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
133
+golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
134
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
135
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
136
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
137
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
138
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
139
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
140
+golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
141
+golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
142
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
143
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
144
+golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
145
+golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
146
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
147
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
148
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
149
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
150
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
151
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
152
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
153
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
154
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI=
155
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
156
+google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI=
157
+google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
158
+google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
159
+google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
160
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
161
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
162
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
163
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
164
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
src/go/otel-collector/exporter/netdataexporter/internal/metadata/generated_status.go
new
+16
@@ -0,0 +1,16 @@
1
+// Code generated by mdatagen. DO NOT EDIT.
2
+
3
+package metadata
4
+
5
+import (
6
+ "go.opentelemetry.io/collector/component"
7
+)
8
+
9
+var (
10
+ Type = component.MustNewType("netdataexporter")
11
+ ScopeName = "github.com/netdata/netdata/otel-collector/exporter/netdataexporter"
12
+)
13
+
14
+const (
15
+ MetricsStability = component.StabilityLevelDevelopment
16
+)
src/go/otel-collector/exporter/netdataexporter/metadata.yaml
new
+7
@@ -0,0 +1,7 @@
1
+type: netdataexporter
2
+github_project: github.com/netdata/netdata/otel-collector/exporter/netdataexporter
3
+
4
+status:
5
+ class: exporter
6
+ stability:
7
+ development: [metrics]