@cryptotaxi247 / netdata-1 / commits / f3cec4765

initial setup of custom OpenTelemetry Collector distribution (#19678)

Ilya Mashchenko committed Feb 19, 2025 at 21:53 UTC f3cec47653e17e44c781ca279e5bb4fd17e4999a
12 files changed +526
src/go/otel-collector/README.md new
+14
@@ -0,0 +1,14 @@
1 +# Netdata OpenTelemetry Collector
2 +
3 +A custom distribution of the OpenTelemetry Collector maintained by Netdata.
4 +
5 +Based on the official OpenTelemetry Collector, this distribution maintains upstream compatibility while providing specialized components designed for Netdata environments. All custom components are maintained and distributed within this repository.
6 +
7 +## Build
8 +
9 +```bash
10 +go install go.opentelemetry.io/collector/cmd/builder@latest
11 +cd src/go/otel-collector
12 +builder --config=builder-config.yaml
13 +build/otelcol.plugin
14 +```
src/go/otel-collector/builder-config.yaml new
+21
@@ -0,0 +1,21 @@
1 +dist:
2 + name: otelcol.plugin
3 + module: github.com/netdata/netdata/otel-collector
4 + description: OpenTelemetry Collector Distribution built for Netdata
5 + output_path: ./build
6 + version: 0.0.0
7 + debug_compilation: false
8 +
9 +
10 +receivers:
11 + - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.120.0
12 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.120.0
13 +
14 +exporters:
15 + - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.120.0
16 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.120.0
17 + - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.120.0
18 + - gomod: github.com/netdata/netdata/otel-collector/exporter/journaldexporter v0.0.0
19 +
20 +replaces:
21 + - github.com/netdata/netdata/otel-collector/exporter/journaldexporter => ../exporter/journaldexporter
src/go/otel-collector/exporter/journaldexporter/config.go new
+17
@@ -0,0 +1,17 @@
1 +package journaldexporter
2 +
3 +import (
4 + "go.opentelemetry.io/collector/component"
5 + "go.opentelemetry.io/collector/config/configtelemetry"
6 +)
7 +
8 +type Config struct {
9 + // Verbosity defines the journald exporter verbosity.
10 + Verbosity configtelemetry.Level `mapstructure:"verbosity,omitempty"`
11 +}
12 +
13 +var _ component.Config = (*Config)(nil)
14 +
15 +func (cfg *Config) Validate() error {
16 + return nil
17 +}
src/go/otel-collector/exporter/journaldexporter/doc.go new
+3
@@ -0,0 +1,3 @@
1 +//go:generate mdatagen metadata.yaml
2 +
3 +package journaldexporter
src/go/otel-collector/exporter/journaldexporter/exporter.go new
+36
@@ -0,0 +1,36 @@
1 +package journaldexporter
2 +
3 +import (
4 + "context"
5 + "fmt"
6 +
7 + "go.opentelemetry.io/collector/component"
8 + "go.opentelemetry.io/collector/pdata/plog"
9 + "go.opentelemetry.io/collector/pdata/pmetric"
10 +)
11 +
12 +type journaldExporter struct {
13 + metricsMarshaler pmetric.Marshaler
14 +}
15 +
16 +func newMyExporter() *journaldExporter {
17 + return &journaldExporter{
18 + metricsMarshaler: &pmetric.JSONMarshaler{},
19 + }
20 +}
21 +
22 +func (e *journaldExporter) consumeLogs(_ context.Context, ld plog.Logs) error {
23 + fmt.Println("consume logs")
24 + return nil
25 +}
26 +
27 +func (e *journaldExporter) Start(_ context.Context, host component.Host) error {
28 + host.GetExtensions()
29 + fmt.Println("Starting MyExporter")
30 + return nil
31 +}
32 +
33 +func (e *journaldExporter) Shutdown(context.Context) error {
34 + fmt.Println("Shutting down MyExporter")
35 + return nil
36 +}
src/go/otel-collector/exporter/journaldexporter/factory.go new
+38
@@ -0,0 +1,38 @@
1 +package journaldexporter
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/journaldexporter/internal/metadata"
13 +)
14 +
15 +func NewFactory() exporter.Factory {
16 + return xexporter.NewFactory(
17 + metadata.Type,
18 + createDefaultConfig,
19 + xexporter.WithLogs(createLogsExporter, metadata.LogsStability),
20 + )
21 +}
22 +
23 +func createDefaultConfig() component.Config {
24 + return &Config{}
25 +}
26 +
27 +func createLogsExporter(ctx context.Context, set exporter.Settings, cfg component.Config) (exporter.Logs, error) {
28 + exp := newMyExporter()
29 + return exporterhelper.NewLogs(
30 + ctx,
31 + set,
32 + cfg,
33 + exp.consumeLogs,
34 + exporterhelper.WithStart(exp.Start),
35 + exporterhelper.WithShutdown(exp.Shutdown),
36 + exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}),
37 + )
38 +}
src/go/otel-collector/exporter/journaldexporter/generated_component_test.go new
+136
@@ -0,0 +1,136 @@
1 +// Code generated by mdatagen. DO NOT EDIT.
2 +
3 +package journaldexporter
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 +func TestComponentFactoryType(t *testing.T) {
23 + require.Equal(t, "journaldexporter", NewFactory().Type().String())
24 +}
25 +
26 +func TestComponentConfigStruct(t *testing.T) {
27 + require.NoError(t, componenttest.CheckConfigStruct(NewFactory().CreateDefaultConfig()))
28 +}
29 +
30 +func TestComponentLifecycle(t *testing.T) {
31 + factory := NewFactory()
32 +
33 + tests := []struct {
34 + createFn func(ctx context.Context, set exporter.Settings, cfg component.Config) (component.Component, error)
35 + name string
36 + }{
37 +
38 + {
39 + name: "logs",
40 + createFn: func(ctx context.Context, set exporter.Settings, cfg component.Config) (component.Component, error) {
41 + return factory.CreateLogs(ctx, set, cfg)
42 + },
43 + },
44 + }
45 +
46 + cm, err := confmaptest.LoadConf("metadata.yaml")
47 + require.NoError(t, err)
48 + cfg := factory.CreateDefaultConfig()
49 + sub, err := cm.Sub("tests::config")
50 + require.NoError(t, err)
51 + require.NoError(t, sub.Unmarshal(&cfg))
52 +
53 + for _, tt := range tests {
54 + t.Run(tt.name+"-shutdown", func(t *testing.T) {
55 + c, err := tt.createFn(context.Background(), exportertest.NewNopSettings(), cfg)
56 + require.NoError(t, err)
57 + err = c.Shutdown(context.Background())
58 + require.NoError(t, err)
59 + })
60 + t.Run(tt.name+"-lifecycle", func(t *testing.T) {
61 + c, err := tt.createFn(context.Background(), exportertest.NewNopSettings(), cfg)
62 + require.NoError(t, err)
63 + host := componenttest.NewNopHost()
64 + err = c.Start(context.Background(), host)
65 + require.NoError(t, err)
66 + require.NotPanics(t, func() {
67 + switch tt.name {
68 + case "logs":
69 + e, ok := c.(exporter.Logs)
70 + require.True(t, ok)
71 + logs := generateLifecycleTestLogs()
72 + if !e.Capabilities().MutatesData {
73 + logs.MarkReadOnly()
74 + }
75 + err = e.ConsumeLogs(context.Background(), logs)
76 + case "metrics":
77 + e, ok := c.(exporter.Metrics)
78 + require.True(t, ok)
79 + metrics := generateLifecycleTestMetrics()
80 + if !e.Capabilities().MutatesData {
81 + metrics.MarkReadOnly()
82 + }
83 + err = e.ConsumeMetrics(context.Background(), metrics)
84 + case "traces":
85 + e, ok := c.(exporter.Traces)
86 + require.True(t, ok)
87 + traces := generateLifecycleTestTraces()
88 + if !e.Capabilities().MutatesData {
89 + traces.MarkReadOnly()
90 + }
91 + err = e.ConsumeTraces(context.Background(), traces)
92 + }
93 + })
94 +
95 + require.NoError(t, err)
96 +
97 + err = c.Shutdown(context.Background())
98 + require.NoError(t, err)
99 + })
100 + }
101 +}
102 +
103 +func generateLifecycleTestLogs() plog.Logs {
104 + logs := plog.NewLogs()
105 + rl := logs.ResourceLogs().AppendEmpty()
106 + rl.Resource().Attributes().PutStr("resource", "R1")
107 + l := rl.ScopeLogs().AppendEmpty().LogRecords().AppendEmpty()
108 + l.Body().SetStr("test log message")
109 + l.SetTimestamp(pcommon.NewTimestampFromTime(time.Now()))
110 + return logs
111 +}
112 +
113 +func generateLifecycleTestMetrics() pmetric.Metrics {
114 + metrics := pmetric.NewMetrics()
115 + rm := metrics.ResourceMetrics().AppendEmpty()
116 + rm.Resource().Attributes().PutStr("resource", "R1")
117 + m := rm.ScopeMetrics().AppendEmpty().Metrics().AppendEmpty()
118 + m.SetName("test_metric")
119 + dp := m.SetEmptyGauge().DataPoints().AppendEmpty()
120 + dp.Attributes().PutStr("test_attr", "value_1")
121 + dp.SetIntValue(123)
122 + dp.SetTimestamp(pcommon.NewTimestampFromTime(time.Now()))
123 + return metrics
124 +}
125 +
126 +func generateLifecycleTestTraces() ptrace.Traces {
127 + traces := ptrace.NewTraces()
128 + rs := traces.ResourceSpans().AppendEmpty()
129 + rs.Resource().Attributes().PutStr("resource", "R1")
130 + span := rs.ScopeSpans().AppendEmpty().Spans().AppendEmpty()
131 + span.Attributes().PutStr("test_attr", "value_1")
132 + span.SetName("test_span")
133 + span.SetStartTimestamp(pcommon.NewTimestampFromTime(time.Now().Add(-1 * time.Second)))
134 + span.SetEndTimestamp(pcommon.NewTimestampFromTime(time.Now()))
135 + return traces
136 +}
src/go/otel-collector/exporter/journaldexporter/generated_package_test.go new
+12
@@ -0,0 +1,12 @@
1 +// Code generated by mdatagen. DO NOT EDIT.
2 +
3 +package journaldexporter
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/journaldexporter/go.mod new
+64
@@ -0,0 +1,64 @@
1 +module github.com/netdata/netdata/otel-collector/exporter/journaldexporter
2 +
3 +go 1.24.0
4 +
5 +require (
6 + github.com/stretchr/testify v1.10.0
7 + go.opentelemetry.io/collector/component v0.120.0
8 + go.opentelemetry.io/collector/component/componenttest v0.120.0
9 + go.opentelemetry.io/collector/config/configtelemetry v0.120.0
10 + go.opentelemetry.io/collector/confmap v1.26.0
11 + go.opentelemetry.io/collector/consumer v1.26.0
12 + go.opentelemetry.io/collector/exporter v0.120.0
13 + go.opentelemetry.io/collector/exporter/exportertest v0.120.0
14 + go.opentelemetry.io/collector/exporter/xexporter v0.120.0
15 + go.opentelemetry.io/collector/pdata v1.26.0
16 + go.uber.org/goleak v1.3.0
17 +)
18 +
19 +require (
20 + github.com/cenkalti/backoff/v4 v4.3.0 // indirect
21 + github.com/davecgh/go-spew v1.1.1 // indirect
22 + github.com/go-logr/logr v1.4.2 // indirect
23 + github.com/go-logr/stdr v1.2.2 // indirect
24 + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
25 + github.com/gogo/protobuf v1.3.2 // indirect
26 + github.com/google/uuid v1.6.0 // indirect
27 + github.com/hashicorp/go-version v1.7.0 // indirect
28 + github.com/json-iterator/go v1.1.12 // indirect
29 + github.com/knadh/koanf/maps v0.1.1 // indirect
30 + github.com/knadh/koanf/providers/confmap v0.1.0 // indirect
31 + github.com/knadh/koanf/v2 v2.1.2 // indirect
32 + github.com/mitchellh/copystructure v1.2.0 // indirect
33 + github.com/mitchellh/reflectwalk v1.0.2 // indirect
34 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
35 + github.com/modern-go/reflect2 v1.0.2 // indirect
36 + github.com/pmezard/go-difflib v1.0.0 // indirect
37 + go.opentelemetry.io/auto/sdk v1.1.0 // indirect
38 + go.opentelemetry.io/collector/config/configretry v1.26.0 // indirect
39 + go.opentelemetry.io/collector/consumer/consumererror v0.120.0 // indirect
40 + go.opentelemetry.io/collector/consumer/consumertest v0.120.0 // indirect
41 + go.opentelemetry.io/collector/consumer/xconsumer v0.120.0 // indirect
42 + go.opentelemetry.io/collector/extension v0.120.0 // indirect
43 + go.opentelemetry.io/collector/extension/xextension v0.120.0 // indirect
44 + go.opentelemetry.io/collector/featuregate v1.26.0 // indirect
45 + go.opentelemetry.io/collector/pdata/pprofile v0.120.0 // indirect
46 + go.opentelemetry.io/collector/pipeline v0.120.0 // indirect
47 + go.opentelemetry.io/collector/receiver v0.120.0 // indirect
48 + go.opentelemetry.io/collector/receiver/receivertest v0.120.0 // indirect
49 + go.opentelemetry.io/collector/receiver/xreceiver v0.120.0 // indirect
50 + go.opentelemetry.io/otel v1.34.0 // indirect
51 + go.opentelemetry.io/otel/metric v1.34.0 // indirect
52 + go.opentelemetry.io/otel/sdk v1.34.0 // indirect
53 + go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect
54 + go.opentelemetry.io/otel/trace v1.34.0 // indirect
55 + go.uber.org/multierr v1.11.0 // indirect
56 + go.uber.org/zap v1.27.0 // indirect
57 + golang.org/x/net v0.33.0 // indirect
58 + golang.org/x/sys v0.29.0 // indirect
59 + golang.org/x/text v0.21.0 // indirect
60 + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
61 + google.golang.org/grpc v1.70.0 // indirect
62 + google.golang.org/protobuf v1.36.5 // indirect
63 + gopkg.in/yaml.v3 v3.0.1 // indirect
64 +)
src/go/otel-collector/exporter/journaldexporter/go.sum new
+162
@@ -0,0 +1,162 @@
1 +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
2 +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
18 +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
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.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs=
29 +github.com/knadh/koanf/maps v0.1.1/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 v0.120.0 h1:YHEQ6NuBI6FQHKW24OwrNg2IJ0EUIg4RIuwV5YQ6PSI=
60 +go.opentelemetry.io/collector/component v0.120.0/go.mod h1:Ya5O+5NWG9XdhJPnOVhKtBrNXHN3hweQbB98HH4KPNU=
61 +go.opentelemetry.io/collector/component/componenttest v0.120.0 h1:vKX85d3lpxj/RoiFQNvmIpX9lOS80FY5svzOYUyeYX0=
62 +go.opentelemetry.io/collector/component/componenttest v0.120.0/go.mod h1:QDLboWF2akEqAGyvje8Hc7GfXcrZvQ5FhmlWvD5SkzY=
63 +go.opentelemetry.io/collector/config/configretry v1.26.0 h1:DGuaZYkGXCr+Wd6+D65xZv7E9z/nyt/F//XbC4B/7M4=
64 +go.opentelemetry.io/collector/config/configretry v1.26.0/go.mod h1:8gzFQ0qzKLYvzP2sNPwsB9gwzKSEls649yANmt/d6yE=
65 +go.opentelemetry.io/collector/config/configtelemetry v0.120.0 h1:YPXMpfMd9PhngFXiwi3Lmze/Rs0nGS5wQOX16Elev+8=
66 +go.opentelemetry.io/collector/config/configtelemetry v0.120.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA=
67 +go.opentelemetry.io/collector/confmap v1.26.0 h1:+EVk0RaCBHs+7dYTwawd5n5tJiiUtErIy3YS3NIFP8o=
68 +go.opentelemetry.io/collector/confmap v1.26.0/go.mod h1:tmOa6iw3FJsEgfBHKALqvcdfRtf71JZGor0wSM5MoH8=
69 +go.opentelemetry.io/collector/consumer v1.26.0 h1:0MwuzkWFLOm13qJvwW85QkoavnGpR4ZObqCs9g1XAvk=
70 +go.opentelemetry.io/collector/consumer v1.26.0/go.mod h1:I/ZwlWM0sbFLhbStpDOeimjtMbWpMFSoGdVmzYxLGDg=
71 +go.opentelemetry.io/collector/consumer/consumererror v0.120.0 h1:f46ZnKCGBdvkjtJBT0ruA9cxDnvuR1jeR0amq9qc6Mc=
72 +go.opentelemetry.io/collector/consumer/consumererror v0.120.0/go.mod h1:2Cx8948nywlM1MFJgqLrIJ7N/pfxZsMF0qq+n9oFJz0=
73 +go.opentelemetry.io/collector/consumer/consumertest v0.120.0 h1:iPFmXygDsDOjqwdQ6YZcTmpiJeQDJX+nHvrjTPsUuv4=
74 +go.opentelemetry.io/collector/consumer/consumertest v0.120.0/go.mod h1:HeSnmPfAEBnjsRR5UY1fDTLlSrYsMsUjufg1ihgnFJ0=
75 +go.opentelemetry.io/collector/consumer/xconsumer v0.120.0 h1:dzM/3KkFfMBIvad+NVXDV+mA+qUpHyu5c70TFOjDg68=
76 +go.opentelemetry.io/collector/consumer/xconsumer v0.120.0/go.mod h1:eOf7RX9CYC7bTZQFg0z2GHdATpQDxI0DP36F9gsvXOQ=
77 +go.opentelemetry.io/collector/exporter v0.120.0 h1:8PIJTV0VW1gyr8XuiEMi/aq+baCMdk1hjSrAYiG8aKk=
78 +go.opentelemetry.io/collector/exporter v0.120.0/go.mod h1:JZCNkv0K+Gwdnfwby7Nxc1/gsmy468SBIjI/6fQdxuk=
79 +go.opentelemetry.io/collector/exporter/exportertest v0.120.0 h1:7ABriAYXGxvUdCXxe0LpsrMGQ+BP5z/gadm1gRWbD4o=
80 +go.opentelemetry.io/collector/exporter/exportertest v0.120.0/go.mod h1:t0hONsvJp5MM1EF1l83voJHcharIPdnpUBP42UhCoCY=
81 +go.opentelemetry.io/collector/exporter/xexporter v0.120.0 h1:HSe3a+0lt/o/g8GgNKgkw9y9vULN4QeY6NeKms8j/GI=
82 +go.opentelemetry.io/collector/exporter/xexporter v0.120.0/go.mod h1:P/87SRTCd/PnQhwAQbELAxotp5gIewT/vpOfEWJZPLk=
83 +go.opentelemetry.io/collector/extension v0.120.0 h1:CA2e6jF5Sz6PE+yxGbJUn0QTMwTo28MO8FNBhdKAABw=
84 +go.opentelemetry.io/collector/extension v0.120.0/go.mod h1:o2/Kk61I1G9XOdD8W4Tbrg05jD4P/QF0ecxYTcT8OZ8=
85 +go.opentelemetry.io/collector/extension/extensiontest v0.120.0 h1:DSN2cuuQ+CUVEgEStX04lG4rg/6oZeM2zyeX5wXeGWg=
86 +go.opentelemetry.io/collector/extension/extensiontest v0.120.0/go.mod h1:MTFigcQ7hblDUv12b3RbfYvtmzUNZzLiDoug11ezJWQ=
87 +go.opentelemetry.io/collector/extension/xextension v0.120.0 h1:2lwasSQI3Fk6zto7u1uaMqDHESZtdq6a9kaAdCPwwO8=
88 +go.opentelemetry.io/collector/extension/xextension v0.120.0/go.mod h1:9QT+Rq6YniuuKklpeAYpvp9ezPn2bjLOqzsBiFk55DE=
89 +go.opentelemetry.io/collector/featuregate v1.26.0 h1:NIZdJby6jL9tEHI25ddeUNgc09Q0Fof31YHF1CSVp4Y=
90 +go.opentelemetry.io/collector/featuregate v1.26.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc=
91 +go.opentelemetry.io/collector/pdata v1.26.0 h1:o7nP0RTQOG0LXk55ZZjLrxwjX8x3wHF7Z7xPeOaskEA=
92 +go.opentelemetry.io/collector/pdata v1.26.0/go.mod h1:18e8/xDZsqyj00h/5HM5GLdJgBzzG9Ei8g9SpNoiMtI=
93 +go.opentelemetry.io/collector/pdata/pprofile v0.120.0 h1:lQl74z41MN9a0M+JFMZbJVesjndbwHXwUleVrVcTgc8=
94 +go.opentelemetry.io/collector/pdata/pprofile v0.120.0/go.mod h1:4zwhklS0qhjptF5GUJTWoCZSTYE+2KkxYrQMuN4doVI=
95 +go.opentelemetry.io/collector/pdata/testdata v0.120.0 h1:Zp0LBOv3yzv/lbWHK1oht41OZ4WNbaXb70ENqRY7HnE=
96 +go.opentelemetry.io/collector/pdata/testdata v0.120.0/go.mod h1:PfezW5Rzd13CWwrElTZRrjRTSgMGUOOGLfHeBjj+LwY=
97 +go.opentelemetry.io/collector/pipeline v0.120.0 h1:QQQbnLCYiuOqmxIRQ11cvFGt+SXq0rypK3fW8qMkzqQ=
98 +go.opentelemetry.io/collector/pipeline v0.120.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4=
99 +go.opentelemetry.io/collector/receiver v0.120.0 h1:JTnPqmBLRXpOyLPh8Kch/5C8SivnpYK9Lzy4PvtEnLQ=
100 +go.opentelemetry.io/collector/receiver v0.120.0/go.mod h1:jpYY55wTVE0FqiBIJrNv2HrvSUnGEjLS/3CWGA+CeL4=
101 +go.opentelemetry.io/collector/receiver/receivertest v0.120.0 h1:Op9yCT0kGvqPF0BB83+iOcsxJJHPCLeL4f4/Op1MBoI=
102 +go.opentelemetry.io/collector/receiver/receivertest v0.120.0/go.mod h1:lpFA4FzcHWki7rLzsNncYmDZ4f7Eik8JY1Mmsaw5uMw=
103 +go.opentelemetry.io/collector/receiver/xreceiver v0.120.0 h1:+gHYd9rTBRKSQfWsTzV2wlwfaVL/LZSz5wu4sygZH7w=
104 +go.opentelemetry.io/collector/receiver/xreceiver v0.120.0/go.mod h1:dkHpL1QqLi/G+60VZnfFpZQf9qoxDVnp6G9FuAcMgfk=
105 +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
106 +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
107 +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
108 +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
109 +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
110 +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
111 +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
112 +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
113 +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
114 +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
115 +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
116 +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
117 +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
118 +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
119 +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
120 +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
121 +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
122 +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
123 +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
124 +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
125 +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
126 +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
127 +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
128 +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
129 +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
130 +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
131 +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
132 +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
133 +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
134 +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
135 +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
136 +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
137 +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
138 +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
139 +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
140 +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
141 +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
142 +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
143 +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
144 +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
145 +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
146 +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
147 +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
148 +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
149 +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
150 +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
151 +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
152 +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
153 +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
154 +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
155 +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
156 +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
157 +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
158 +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
159 +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
160 +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
161 +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
162 +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
src/go/otel-collector/exporter/journaldexporter/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("journaldexporter")
11 + ScopeName = "github.com/netdata/netdata/otel-collector/exporter/journaldexporter"
12 +)
13 +
14 +const (
15 + LogsStability = component.StabilityLevelDevelopment
16 +)
src/go/otel-collector/exporter/journaldexporter/metadata.yaml new
+7
@@ -0,0 +1,7 @@
1 +type: journaldexporter
2 +github_project: github.com/netdata/netdata/otel-collector/exporter/journaldexporter
3 +
4 +status:
5 + class: exporter
6 + stability:
7 + development: [logs]