@cryptotaxi247 / netdata-1 / commits / 836215af6

chore(otel/journaldexporter): convert logs to journald format (#20033)

journaldexporter: add func to converts logs

Ilya Mashchenko committed Apr 2, 2025 at 17:48 UTC 836215af61c866d2dab23ffab958eee21931469d
10 files changed +398 -92
src/go/otel-collector/builder-config.yaml
+5 -5
@@ -8,13 +8,13 @@ dist:
8
9
10 receivers:
11 - - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.122.0
12 - - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.122.0
11 + - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.123.0
12 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.123.0
13
14 exporters:
15 - - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.122.0
16 - - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.122.0
17 - - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.122.0
15 + - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.123.0
16 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.123.0
17 + - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.123.0
18 - gomod: github.com/netdata/netdata/otel-collector/exporter/journaldexporter v0.0.0
19
20 replaces:
src/go/otel-collector/exporter/journaldexporter/config.go
+4 -3
@@ -2,12 +2,13 @@ package journaldexporter
2
3 import (
4 "go.opentelemetry.io/collector/component"
5 - "go.opentelemetry.io/collector/config/configtelemetry"
5 )
6
7 type Config struct {
9 - // Verbosity defines the journald exporter verbosity.
10 - Verbosity configtelemetry.Level `mapstructure:"verbosity,omitempty"`
8 + URL string `mapstructure:"url"`
9 + ServerKeyFile string `mapstructure:"server_key_file"`
10 + ServerCertificateFile string `mapstructure:"server_certificate_file"`
11 + TrustedCertificateFile string `mapstructure:"trusted_certificate_file"`
12 }
13
14 var _ component.Config = (*Config)(nil)
src/go/otel-collector/exporter/journaldexporter/convert.go new
+153
@@ -0,0 +1,153 @@
1 +package journaldexporter
2 +
3 +import (
4 + "bytes"
5 + "encoding/binary"
6 + "strconv"
7 + "strings"
8 + "time"
9 +
10 + "go.opentelemetry.io/collector/pdata/pcommon"
11 + "go.opentelemetry.io/collector/pdata/plog"
12 +)
13 +
14 +func logsToJournaldMessages(ld plog.Logs, buf *bytes.Buffer) {
15 + rls := ld.ResourceLogs()
16 + for i := 0; i < rls.Len(); i++ {
17 + rl := rls.At(i)
18 + resource := rl.Resource()
19 +
20 + scopeLogs := rl.ScopeLogs()
21 + for j := 0; j < scopeLogs.Len(); j++ {
22 + sl := scopeLogs.At(j)
23 + scope := sl.Scope()
24 +
25 + logRecords := sl.LogRecords()
26 + for k := 0; k < logRecords.Len(); k++ {
27 + lr := logRecords.At(k)
28 +
29 + resource.Attributes().Range(func(k string, v pcommon.Value) bool {
30 + writeField(buf, "RESOURCE_"+k, v.AsString())
31 + return true
32 + })
33 +
34 + if scope.Name() != "" {
35 + writeField(buf, "OTEL_SCOPE_NAME", scope.Name())
36 + }
37 + if scope.Version() != "" {
38 + writeField(buf, "OTEL_SCOPE_VERSION", scope.Version())
39 + }
40 +
41 + if lr.Timestamp() != 0 {
42 + ts := time.Unix(0, int64(lr.Timestamp()))
43 + writeField(buf, "REALTIME_TIMESTAMP", strconv.FormatInt(ts.UnixMicro(), 10))
44 + }
45 +
46 + if lr.ObservedTimestamp() != 0 && lr.ObservedTimestamp() != lr.Timestamp() {
47 + ts := time.Unix(0, int64(lr.ObservedTimestamp()))
48 + writeField(buf, "OTEL_OBSERVED_TIMESTAMP", strconv.FormatInt(ts.UnixMicro(), 10))
49 + }
50 +
51 + priority := mapSeverityToJournaldPriority(lr.SeverityNumber())
52 + writeField(buf, "PRIORITY", strconv.Itoa(priority))
53 +
54 + if lr.SeverityText() != "" {
55 + writeField(buf, "LEVEL", lr.SeverityText())
56 + }
57 +
58 + if !lr.TraceID().IsEmpty() {
59 + writeField(buf, "TRACE_ID", lr.TraceID().String())
60 + if !lr.SpanID().IsEmpty() {
61 + writeField(buf, "SPAN_ID", lr.SpanID().String())
62 + }
63 + if lr.Flags() != 0 {
64 + writeField(buf, "TRACE_FLAGS", strconv.FormatUint(uint64(lr.Flags()), 16))
65 + }
66 + }
67 +
68 + if lr.EventName() != "" {
69 + writeField(buf, "EVENT_NAME", lr.EventName())
70 + }
71 +
72 + bodyStr := bodyToString(lr.Body())
73 + if bodyStr != "" {
74 + writeField(buf, "MESSAGE", bodyStr)
75 + }
76 +
77 + lr.Attributes().Range(func(k string, v pcommon.Value) bool {
78 + writeField(buf, "ATTR_"+k, v.AsString())
79 + return true
80 + })
81 +
82 + buf.WriteByte('\n') // extra newline
83 + }
84 + }
85 + }
86 +}
87 +
88 +func mapSeverityToJournaldPriority(severity plog.SeverityNumber) int {
89 + switch {
90 + case severity >= plog.SeverityNumberFatal && severity <= plog.SeverityNumberFatal4:
91 + return 2 // critical
92 + case severity >= plog.SeverityNumberError && severity <= plog.SeverityNumberError4:
93 + return 3 // error
94 + case severity >= plog.SeverityNumberWarn && severity <= plog.SeverityNumberWarn4:
95 + return 4 // warning
96 + case severity >= plog.SeverityNumberInfo && severity <= plog.SeverityNumberInfo4:
97 + return 6 // info
98 + case severity >= plog.SeverityNumberDebug && severity <= plog.SeverityNumberDebug4:
99 + return 7 // debug
100 + case severity >= plog.SeverityNumberTrace && severity <= plog.SeverityNumberTrace4:
101 + return 7 // debug (journald doesn't have trace)
102 + default:
103 + return 6 // info as default
104 + }
105 +}
106 +
107 +func bodyToString(body pcommon.Value) string {
108 + switch body.Type() {
109 + case pcommon.ValueTypeEmpty:
110 + return ""
111 + case pcommon.ValueTypeStr:
112 + return body.Str()
113 + default:
114 + return body.AsString()
115 + }
116 +}
117 +
118 +func writeField(buf *bytes.Buffer, name, value string) {
119 + if value == "" {
120 + return
121 + }
122 + normalizedName := normalizeFieldName(name)
123 +
124 + if strings.ContainsRune(value, '\n') {
125 + buf.WriteString(normalizedName)
126 + buf.WriteByte('\n')
127 + _ = binary.Write(buf, binary.LittleEndian, uint64(len(value)))
128 + buf.WriteString(value)
129 + buf.WriteByte('\n')
130 + } else {
131 + buf.WriteString(normalizedName)
132 + buf.WriteByte('=')
133 + buf.WriteString(value)
134 + buf.WriteByte('\n')
135 + }
136 +}
137 +
138 +func normalizeFieldName(name string) string {
139 + // Journald field names can only contain uppercase letters, numbers, and underscores
140 + // Replace any character that isn't A-Z, 0-9, or _ with _
141 + normalized := strings.Map(func(r rune) rune {
142 + if (r >= 'A' && r <= 'Z') || (r >= '0' && r <= '9') || r == '_' {
143 + return r
144 + }
145 + if r >= 'a' && r <= 'z' {
146 + return r - 32 // Convert to uppercase
147 + }
148 + return '_'
149 + }, name)
150 +
151 + // Journald field names must be uppercase
152 + return strings.ToUpper(normalized)
153 +}
src/go/otel-collector/exporter/journaldexporter/convert_test.go new
+141
@@ -0,0 +1,141 @@
1 +package journaldexporter
2 +
3 +import (
4 + "bytes"
5 + "encoding/binary"
6 + "testing"
7 + "time"
8 +
9 + "github.com/stretchr/testify/assert"
10 + "go.opentelemetry.io/collector/pdata/pcommon"
11 + "go.opentelemetry.io/collector/pdata/plog"
12 +)
13 +
14 +func TestLogsToJournaldMessages(t *testing.T) {
15 + type testCase struct {
16 + logsFn func() plog.Logs
17 + expected string
18 + }
19 +
20 + tests := map[string]testCase{
21 + "simple log with basic fields": {
22 + logsFn: func() plog.Logs {
23 + logs := plog.NewLogs()
24 + rl := logs.ResourceLogs().AppendEmpty()
25 +
26 + rl.Resource().Attributes().PutStr("service.name", "test-service")
27 + rl.Resource().Attributes().PutStr("service.instance.id", "instance-1")
28 +
29 + sl := rl.ScopeLogs().AppendEmpty()
30 + sl.Scope().SetName("test-scope")
31 + sl.Scope().SetVersion("v1.0.0")
32 +
33 + lr := sl.LogRecords().AppendEmpty()
34 + lr.SetTimestamp(pcommon.NewTimestampFromTime(time.Unix(1617030613, 0))) // 2021-03-29T12:23:33Z
35 + lr.SetSeverityNumber(plog.SeverityNumberInfo)
36 + lr.SetSeverityText("INFO")
37 + lr.Body().SetStr("This is a test message")
38 +
39 + lr.Attributes().PutStr("http.method", "GET")
40 + lr.Attributes().PutInt("http.status_code", 200)
41 +
42 + return logs
43 + },
44 + expected: `RESOURCE_SERVICE_NAME=test-service
45 +RESOURCE_SERVICE_INSTANCE_ID=instance-1
46 +OTEL_SCOPE_NAME=test-scope
47 +OTEL_SCOPE_VERSION=v1.0.0
48 +REALTIME_TIMESTAMP=1617030613000000
49 +PRIORITY=6
50 +LEVEL=INFO
51 +MESSAGE=This is a test message
52 +ATTR_HTTP_METHOD=GET
53 +ATTR_HTTP_STATUS_CODE=200
54 +
55 +`,
56 + },
57 + "log with trace context": {
58 + logsFn: func() plog.Logs {
59 + logs := plog.NewLogs()
60 + rl := logs.ResourceLogs().AppendEmpty()
61 + sl := rl.ScopeLogs().AppendEmpty()
62 + lr := sl.LogRecords().AppendEmpty()
63 +
64 + lr.SetSeverityNumber(plog.SeverityNumberError)
65 + lr.SetSeverityText("ERROR")
66 + lr.Body().SetStr("Connection failed")
67 +
68 + traceID := pcommon.TraceID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16})
69 + spanID := pcommon.SpanID([8]byte{1, 2, 3, 4, 5, 6, 7, 8})
70 + lr.SetTraceID(traceID)
71 + lr.SetSpanID(spanID)
72 + lr.SetFlags(1) // Sampled flag
73 +
74 + return logs
75 + },
76 + expected: `PRIORITY=3
77 +LEVEL=ERROR
78 +TRACE_ID=0102030405060708090a0b0c0d0e0f10
79 +SPAN_ID=0102030405060708
80 +TRACE_FLAGS=1
81 +MESSAGE=Connection failed
82 +
83 +`,
84 + },
85 + "log with multiline message": {
86 + logsFn: func() plog.Logs {
87 + logs := plog.NewLogs()
88 + rl := logs.ResourceLogs().AppendEmpty()
89 + sl := rl.ScopeLogs().AppendEmpty()
90 + lr := sl.LogRecords().AppendEmpty()
91 +
92 + lr.SetSeverityNumber(plog.SeverityNumberError)
93 + lr.Body().SetStr("Error occurred:\nStack trace:\n at function1()\n at function2()\n at main()")
94 +
95 + return logs
96 + },
97 + expected: func() string {
98 + var buf bytes.Buffer
99 + buf.WriteString("PRIORITY=3\n")
100 + buf.WriteString("MESSAGE\n")
101 + multilineMsg := "Error occurred:\nStack trace:\n at function1()\n at function2()\n at main()"
102 + _ = binary.Write(&buf, binary.LittleEndian, uint64(len(multilineMsg)))
103 + buf.WriteString(multilineMsg)
104 + buf.WriteString("\n\n")
105 + return buf.String()
106 + }(),
107 + },
108 + }
109 +
110 + for name, tc := range tests {
111 + t.Run(name, func(t *testing.T) {
112 + var buf bytes.Buffer
113 + logsToJournaldMessages(tc.logsFn(), &buf)
114 +
115 + assert.Equal(t, tc.expected, buf.String())
116 + })
117 + }
118 +}
119 +
120 +func TestMappingSeverity(t *testing.T) {
121 + tests := map[string]struct {
122 + severity plog.SeverityNumber
123 + expected int
124 + }{
125 + "undefined": {severity: plog.SeverityNumberUnspecified, expected: 6},
126 + "trace": {severity: plog.SeverityNumberTrace, expected: 7},
127 + "trace2": {severity: plog.SeverityNumberTrace2, expected: 7},
128 + "debug": {severity: plog.SeverityNumberDebug, expected: 7},
129 + "info": {severity: plog.SeverityNumberInfo, expected: 6},
130 + "warn": {severity: plog.SeverityNumberWarn, expected: 4},
131 + "error": {severity: plog.SeverityNumberError, expected: 3},
132 + "fatal": {severity: plog.SeverityNumberFatal, expected: 2},
133 + }
134 +
135 + for name, tc := range tests {
136 + t.Run(name, func(t *testing.T) {
137 + result := mapSeverityToJournaldPriority(tc.severity)
138 + assert.Equal(t, tc.expected, result)
139 + })
140 + }
141 +}
src/go/otel-collector/exporter/journaldexporter/exporter.go
+6 -4
@@ -6,16 +6,18 @@ import (
6
7 "go.opentelemetry.io/collector/component"
8 "go.opentelemetry.io/collector/pdata/plog"
9 - "go.opentelemetry.io/collector/pdata/pmetric"
9 + "go.uber.org/zap"
10 )
11
12 type journaldExporter struct {
13 - metricsMarshaler pmetric.Marshaler
13 + log *zap.Logger
14 + conf *Config
15 }
16
16 -func newMyExporter() *journaldExporter {
17 +func newJournaldExporter(cfg component.Config, logger *zap.Logger) *journaldExporter {
18 return &journaldExporter{
18 - metricsMarshaler: &pmetric.JSONMarshaler{},
19 + log: logger,
20 + conf: cfg.(*Config),
21 }
22 }
23
src/go/otel-collector/exporter/journaldexporter/factory.go
+2 -1
@@ -25,7 +25,8 @@ func createDefaultConfig() component.Config {
25 }
26
27 func createLogsExporter(ctx context.Context, set exporter.Settings, cfg component.Config) (exporter.Logs, error) {
28 - exp := newMyExporter()
28 + exp := newJournaldExporter(cfg, set.Logger)
29 +
30 return exporterhelper.NewLogs(
31 ctx,
32 set,
src/go/otel-collector/exporter/journaldexporter/generated_component_test.go
+5 -3
@@ -19,8 +19,10 @@ import (
19 "go.opentelemetry.io/collector/pdata/ptrace"
20 )
21
22 +var typ = component.MustNewType("journaldexporter")
23 +
24 func TestComponentFactoryType(t *testing.T) {
23 - require.Equal(t, "journaldexporter", NewFactory().Type().String())
25 + require.Equal(t, typ, NewFactory().Type())
26 }
27
28 func TestComponentConfigStruct(t *testing.T) {
@@ -52,13 +54,13 @@ func TestComponentLifecycle(t *testing.T) {
54
55 for _, tt := range tests {
56 t.Run(tt.name+"-shutdown", func(t *testing.T) {
55 - c, err := tt.createFn(context.Background(), exportertest.NewNopSettings(), cfg)
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) {
61 - c, err := tt.createFn(context.Background(), exportertest.NewNopSettings(), cfg)
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)
src/go/otel-collector/exporter/journaldexporter/go.mod
+25 -23
@@ -4,16 +4,16 @@ go 1.23.4
4
5 require (
6 github.com/stretchr/testify v1.10.0
7 - go.opentelemetry.io/collector/component v1.28.0
8 - go.opentelemetry.io/collector/component/componenttest v0.122.0
9 - go.opentelemetry.io/collector/config/configtelemetry v0.122.0
10 - go.opentelemetry.io/collector/confmap v1.28.0
11 - go.opentelemetry.io/collector/consumer v1.28.0
12 - go.opentelemetry.io/collector/exporter v0.122.0
13 - go.opentelemetry.io/collector/exporter/exportertest v0.122.0
14 - go.opentelemetry.io/collector/exporter/xexporter v0.122.0
15 - go.opentelemetry.io/collector/pdata v1.28.0
7 + go.opentelemetry.io/collector/component v1.29.0
8 + go.opentelemetry.io/collector/component/componenttest v0.123.0
9 + go.opentelemetry.io/collector/confmap v1.29.0
10 + go.opentelemetry.io/collector/consumer v1.29.0
11 + go.opentelemetry.io/collector/exporter v0.123.0
12 + go.opentelemetry.io/collector/exporter/exportertest v0.123.0
13 + go.opentelemetry.io/collector/exporter/xexporter v0.123.0
14 + go.opentelemetry.io/collector/pdata v1.29.0
15 go.uber.org/goleak v1.3.0
16 + go.uber.org/zap v1.27.0
17 )
18
19 require (
@@ -35,30 +35,32 @@ require (
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.28.0 // indirect
39 - go.opentelemetry.io/collector/consumer/consumererror v0.122.0 // indirect
40 - go.opentelemetry.io/collector/consumer/consumertest v0.122.0 // indirect
41 - go.opentelemetry.io/collector/consumer/xconsumer v0.122.0 // indirect
42 - go.opentelemetry.io/collector/extension v1.28.0 // indirect
43 - go.opentelemetry.io/collector/extension/xextension v0.122.0 // indirect
44 - go.opentelemetry.io/collector/featuregate v1.28.0 // indirect
45 - go.opentelemetry.io/collector/pdata/pprofile v0.122.0 // indirect
46 - go.opentelemetry.io/collector/pipeline v0.122.0 // indirect
47 - go.opentelemetry.io/collector/receiver v1.28.0 // indirect
48 - go.opentelemetry.io/collector/receiver/receivertest v0.122.0 // indirect
49 - go.opentelemetry.io/collector/receiver/xreceiver v0.122.0 // indirect
38 + go.opentelemetry.io/collector/config/configretry v1.29.0 // indirect
39 + go.opentelemetry.io/collector/consumer/consumererror v0.123.0 // indirect
40 + go.opentelemetry.io/collector/consumer/consumertest v0.123.0 // indirect
41 + go.opentelemetry.io/collector/consumer/xconsumer v0.123.0 // indirect
42 + go.opentelemetry.io/collector/extension v1.29.0 // indirect
43 + go.opentelemetry.io/collector/extension/xextension v0.123.0 // indirect
44 + go.opentelemetry.io/collector/featuregate v1.29.0 // indirect
45 + go.opentelemetry.io/collector/internal/telemetry v0.123.0 // indirect
46 + go.opentelemetry.io/collector/pdata/pprofile v0.123.0 // indirect
47 + go.opentelemetry.io/collector/pipeline v0.123.0 // indirect
48 + go.opentelemetry.io/collector/receiver v1.29.0 // indirect
49 + go.opentelemetry.io/collector/receiver/receivertest v0.123.0 // indirect
50 + go.opentelemetry.io/collector/receiver/xreceiver v0.123.0 // indirect
51 + go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 // indirect
52 go.opentelemetry.io/otel v1.35.0 // indirect
53 + go.opentelemetry.io/otel/log v0.11.0 // indirect
54 go.opentelemetry.io/otel/metric v1.35.0 // indirect
55 go.opentelemetry.io/otel/sdk v1.35.0 // indirect
56 go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect
57 go.opentelemetry.io/otel/trace v1.35.0 // indirect
58 go.uber.org/multierr v1.11.0 // indirect
56 - go.uber.org/zap v1.27.0 // indirect
59 golang.org/x/net v0.37.0 // indirect
60 golang.org/x/sys v0.31.0 // indirect
61 golang.org/x/text v0.23.0 // indirect
62 google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect
63 google.golang.org/grpc v1.71.0 // indirect
62 - google.golang.org/protobuf v1.36.5 // indirect
64 + google.golang.org/protobuf v1.36.6 // indirect
65 gopkg.in/yaml.v3 v3.0.1 // indirect
66 )
src/go/otel-collector/exporter/journaldexporter/go.sum
+52 -48
@@ -56,54 +56,58 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
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.28.0 h1:SQAGxxuyZ+d5tOsuEka8m9oE+wAroaYQpJ8NTIbl6Lk=
60 -go.opentelemetry.io/collector/component v1.28.0/go.mod h1:te8gbcKU6Mgu7ewo/2VYDSbCkLrhOYYy2llayXCF0bI=
61 -go.opentelemetry.io/collector/component/componenttest v0.122.0 h1:TxMm4nXB9iByQhDP0QFZwYxG+BFXEB6qUUwVh5YYW7g=
62 -go.opentelemetry.io/collector/component/componenttest v0.122.0/go.mod h1:zzRftQeGgVPxKzXkJEx3ghC4U3hgiDRuuNljsq3cLPI=
63 -go.opentelemetry.io/collector/config/configretry v1.28.0 h1:UqdSd+909bM9nC0eGcQvbTUdPQbEVJYDVjScFie5xFc=
64 -go.opentelemetry.io/collector/config/configretry v1.28.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ=
65 -go.opentelemetry.io/collector/config/configtelemetry v0.122.0 h1:jBPdzU0CVrlxttnfKa0s2kyMVJeHY/faBht6/FUQcWI=
66 -go.opentelemetry.io/collector/config/configtelemetry v0.122.0/go.mod h1:WXmlNatI0vwjv7whh/qF1Xy+UufCZDk7VLtYqML7QmA=
67 -go.opentelemetry.io/collector/confmap v1.28.0 h1:pUQh4eOW0YQ1GFWTDP5pw/ZMQuppkz6oSoDDloAH/Sc=
68 -go.opentelemetry.io/collector/confmap v1.28.0/go.mod h1:k/3fo+2RE6m+OKlJzx78Q8hstABYwYgvXO3u9zyTeHI=
69 -go.opentelemetry.io/collector/consumer v1.28.0 h1:3JzDm7EFAF9ws4O3vVou5n8egdGZtrRN3xVw6AjNtqE=
70 -go.opentelemetry.io/collector/consumer v1.28.0/go.mod h1:Ge1HGm5aRYTW+SXggM+US9phb/BQR2of4FZ8r/3OH3Y=
71 -go.opentelemetry.io/collector/consumer/consumererror v0.122.0 h1:IoCEQE0xqNVsH7wOwmBBLR0W/+p8QFjYwNlZTrhztvM=
72 -go.opentelemetry.io/collector/consumer/consumererror v0.122.0/go.mod h1:8RPibMrh84PHzqGchjiKIRz4eqdylMg8boLwMJY3WjU=
73 -go.opentelemetry.io/collector/consumer/consumertest v0.122.0 h1:nV/qmUNRJZX+Eof963k+ShYy06DtQxMvP62nrXM8JJk=
74 -go.opentelemetry.io/collector/consumer/consumertest v0.122.0/go.mod h1:D7qDviTkrXfYigmSF4A8K7vQtb5ec/TVJsCNlVLIhxY=
75 -go.opentelemetry.io/collector/consumer/xconsumer v0.122.0 h1:7IyhI81BOf0YfsoI83/s7/muf7frkmgiX/FsFfZApq0=
76 -go.opentelemetry.io/collector/consumer/xconsumer v0.122.0/go.mod h1:+kN4ZwuJTLlLdtH+DkUyXqT/zQFMktbWFIdVqfmSWRY=
77 -go.opentelemetry.io/collector/exporter v0.122.0 h1:Y1ZigdLwHrN1/VA+P3lYrnM2gAmo/tQxHVxdfg+489U=
78 -go.opentelemetry.io/collector/exporter v0.122.0/go.mod h1:xtoCOeeGpZgcvMX8Od+HLBgDGqUstIii/NQXXjEkNR0=
79 -go.opentelemetry.io/collector/exporter/exportertest v0.122.0 h1:NfhUI8OocfhLCpIuNlS9yx1Lt/Vmmn97Z8JnId+qVKw=
80 -go.opentelemetry.io/collector/exporter/exportertest v0.122.0/go.mod h1:1ntDyuDvpiqJH/YyQ4uvfePESaJm0g2D77syBkLAmmg=
81 -go.opentelemetry.io/collector/exporter/xexporter v0.122.0 h1:fd+IEFSNZoUa/3Z8eNLPKqOkeh7nEV6qTlqoFzt+uD0=
82 -go.opentelemetry.io/collector/exporter/xexporter v0.122.0/go.mod h1:pRqtMIBLcnUsyMwaIjUz//0fKWj+9VXOA+tUGnS9DDQ=
83 -go.opentelemetry.io/collector/extension v1.28.0 h1:E3j6/EtcahF2bX9DvRduLQ6tD7SuZdXM9DzAi7NSAeY=
84 -go.opentelemetry.io/collector/extension v1.28.0/go.mod h1:3MW9IGCNNgjG/ngkALVH5epwbCwYuoZMTbh4523aYv0=
85 -go.opentelemetry.io/collector/extension/extensiontest v0.122.0 h1:daeCPXhb4HveyeYyX6G0IqjGuvWJprZeiq7pZiSdC+M=
86 -go.opentelemetry.io/collector/extension/extensiontest v0.122.0/go.mod h1:JXSONLbyuX+uOy1gcQ3Jcp/48pfkh0RiZPy7XkyCBdU=
87 -go.opentelemetry.io/collector/extension/xextension v0.122.0 h1:EoPcWm69j0OZCyKvZ0H0KfkLRKZyry678852ua7k+DI=
88 -go.opentelemetry.io/collector/extension/xextension v0.122.0/go.mod h1:hdkdi0cGk3X1+9M0IS1LJ8dhlnEKhqHd2HMdc2ata5A=
89 -go.opentelemetry.io/collector/featuregate v1.28.0 h1:nkaMw0HyOSxojLwlezF2O/xJ9T/Jo1a0iEetesT9lr0=
90 -go.opentelemetry.io/collector/featuregate v1.28.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc=
91 -go.opentelemetry.io/collector/pdata v1.28.0 h1:xSZyvTOOc2Wmz4PoxrVqeQfodLgs9k7gowLAnzZN0eU=
92 -go.opentelemetry.io/collector/pdata v1.28.0/go.mod h1:asKE8MD/4SOKz1mCrGdAz4VO2U2HUNg8A6094uK7pq0=
93 -go.opentelemetry.io/collector/pdata/pprofile v0.122.0 h1:JcmYBmNNOKRO7mIBxJ79YKgrTowILCCcpxKorDBfFOs=
94 -go.opentelemetry.io/collector/pdata/pprofile v0.122.0/go.mod h1:miIYvmTQov3C2/D7T0nRMndhavG4tPqz3llKMdLjSwg=
95 -go.opentelemetry.io/collector/pdata/testdata v0.122.0 h1:ANXZ+h9yAy1N37ot407qnMtISjZIgjYk10atzD7wSKI=
96 -go.opentelemetry.io/collector/pdata/testdata v0.122.0/go.mod h1:5WxeLDGisczRoS5lnxyt0PqGI3tr2QnhxUHupGrDY64=
97 -go.opentelemetry.io/collector/pipeline v0.122.0 h1:DmiNzhj2IPpL6JisPo0Hs8vyS5AsUz+GlPh5wblJmTk=
98 -go.opentelemetry.io/collector/pipeline v0.122.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4=
99 -go.opentelemetry.io/collector/receiver v1.28.0 h1:yvAUb+QTdkhIuUVY5wGUPyXqIylIttGpt+k+1b77jic=
100 -go.opentelemetry.io/collector/receiver v1.28.0/go.mod h1:ceNMHvsSkFOHK80UkQd5kdrU3Qq7NA+dS7oc6C4zLRc=
101 -go.opentelemetry.io/collector/receiver/receivertest v0.122.0 h1:qBy1XbddIQRvslmS1WXhTnjzOIwuLBTbp8CGN8atNKk=
102 -go.opentelemetry.io/collector/receiver/receivertest v0.122.0/go.mod h1:zuB9o86N1UFgauDS9cHT8vHWQVggNRcyinwRZZv5Z9A=
103 -go.opentelemetry.io/collector/receiver/xreceiver v0.122.0 h1:rAWEMR/TDu+a9ATGIec4m9swVT0KvimUQqZpOLgTCVM=
104 -go.opentelemetry.io/collector/receiver/xreceiver v0.122.0/go.mod h1:LLMY2gDtQCieYEOa5h6heHv+FMkC+b1u/yUXRJvwrEo=
59 +go.opentelemetry.io/collector/component v1.29.0 h1:SQDKqMb3EUNPyxZDrImkqgi8p682Hm986CMXBiiTkz0=
60 +go.opentelemetry.io/collector/component v1.29.0/go.mod h1:qHoiz0iyBgyAYsT0F8FgtcJv8pTEQDvo1Ox3eO3qVlY=
61 +go.opentelemetry.io/collector/component/componenttest v0.123.0 h1:h0B/kBj0URKq+i9iMbMuLhc6/dZ2GWL0y9L6tqHRNuA=
62 +go.opentelemetry.io/collector/component/componenttest v0.123.0/go.mod h1:4Y6EMvsgE9fUNM98G0eW5+LFXfcxdhTHQDhaOxJrgN8=
63 +go.opentelemetry.io/collector/config/configretry v1.29.0 h1:Gm140dYwQk9TRQBQHF4hYybdvE2KvUhCLndPvZupTxM=
64 +go.opentelemetry.io/collector/config/configretry v1.29.0/go.mod h1:QNnb+MCk7aS1k2EuGJMtlNCltzD7b8uC7Xel0Dxm1wQ=
65 +go.opentelemetry.io/collector/confmap v1.29.0 h1:1d43r3gQApgRxjyiQ86/qQd7OHW/BEbM6m/L36O5gKU=
66 +go.opentelemetry.io/collector/confmap v1.29.0/go.mod h1:g8DLibnb2MEUWMMlyxHl1VviwFKUdwyBE5M1bxY1Pwg=
67 +go.opentelemetry.io/collector/consumer v1.29.0 h1:WOtwc7bY0/L47mZPE6fu/txD6Fg2dPI3c/Cq+H1RRNY=
68 +go.opentelemetry.io/collector/consumer v1.29.0/go.mod h1:SRcOjDfuvTEk6pchJ0HuOBLsmbRG26+mZLrwXb9T3TQ=
69 +go.opentelemetry.io/collector/consumer/consumererror v0.123.0 h1:/X32KeSGTLX+/YRlR1Wx6/GQkL2m1A6l3B0BYErnxC0=
70 +go.opentelemetry.io/collector/consumer/consumererror v0.123.0/go.mod h1:A9oAkn1emXnenyXiBb5iJNteWCidrM5remnzRqXHOKc=
71 +go.opentelemetry.io/collector/consumer/consumertest v0.123.0 h1:IGBan9tb/QJOzGO8AaQai/jv2DQ7V1DbsFhrTHhDSe8=
72 +go.opentelemetry.io/collector/consumer/consumertest v0.123.0/go.mod h1:MN6OZWsjF1JpvxEzGy7xFu0+PGtbzOASQnN6GgX7olA=
73 +go.opentelemetry.io/collector/consumer/xconsumer v0.123.0 h1:UJhwYgtAe3O/8ilQj+AiyLBz+PXnw/hrpPk3wkB7u9g=
74 +go.opentelemetry.io/collector/consumer/xconsumer v0.123.0/go.mod h1:+LAk3gs6kQ3O0+jLZhZAfgPEWUinxKkFqb3nZkYbC6w=
75 +go.opentelemetry.io/collector/exporter v0.123.0 h1:Dda4AJl6GB+3s6syq45EGpP/kq3xnjcYBBd9SL5A0iA=
76 +go.opentelemetry.io/collector/exporter v0.123.0/go.mod h1:ZeRhRP7AfWmkWkQIBn6A9sIzPkhpjFSjC6Cr78kugr0=
77 +go.opentelemetry.io/collector/exporter/exportertest v0.123.0 h1:TR8pmnyUvy6BnF/suwplZ8l/s7ozetlE1sRYeNfvpoc=
78 +go.opentelemetry.io/collector/exporter/exportertest v0.123.0/go.mod h1:GHt8/K/1evqJ84IUT1QjYrpmBS5dtQOjc7moxik7rA0=
79 +go.opentelemetry.io/collector/exporter/xexporter v0.123.0 h1:7uAARN1ktH8OnhansCiJkhqYcfjp4UtdjUimeORJCYc=
80 +go.opentelemetry.io/collector/exporter/xexporter v0.123.0/go.mod h1:k8TLjOKKm7RxoXIk/aA7CF7CdsoCFYx+4Sfnjd2rR5U=
81 +go.opentelemetry.io/collector/extension v1.29.0 h1:xydxgo+UwDSZtcYGjEbj2UJtfevBSqRhPYyDuOC2VSI=
82 +go.opentelemetry.io/collector/extension v1.29.0/go.mod h1:s/8CiRG1UdAEmovkO7zGACoxBqhqo0UaHciK4Ud+5P4=
83 +go.opentelemetry.io/collector/extension/extensiontest v0.123.0 h1:QankUyQPcmx0UIBGWJX8ObpdESHULhCo0JDhXtagb0s=
84 +go.opentelemetry.io/collector/extension/extensiontest v0.123.0/go.mod h1:JSnbeMyH55jFQqT77wZh04Xx8EnwcIY39A+MqnwDawk=
85 +go.opentelemetry.io/collector/extension/xextension v0.123.0 h1:GA0Hp9+3aY+bCXlPTsSSkQKgRpK3TMJ7lke19DGyqXA=
86 +go.opentelemetry.io/collector/extension/xextension v0.123.0/go.mod h1:qMBSQaxnFDL74poKWeVifhhuF5UCZ73GGD0mgyTI6SE=
87 +go.opentelemetry.io/collector/featuregate v1.29.0 h1:DTDeaokT53AA+SiYBH8GC893cmppThU65b3XyFfLPWw=
88 +go.opentelemetry.io/collector/featuregate v1.29.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc=
89 +go.opentelemetry.io/collector/internal/telemetry v0.123.0 h1:K6UMv22ulxcv/G8BkwywMN4LprpwuLl1rhTMWpnujqE=
90 +go.opentelemetry.io/collector/internal/telemetry v0.123.0/go.mod h1:Qwh5XcqAlAT9NorjaaSaNcilDgaecs8S+OKljJ9hFno=
91 +go.opentelemetry.io/collector/pdata v1.29.0 h1:ZXSZ2fROdAEbv4JKKiCspBpjIjYZ5XaNt71LNH4RpQw=
92 +go.opentelemetry.io/collector/pdata v1.29.0/go.mod h1:9kb3zMtLFXBPA6WGWkBHbkFwlwwYL/OHk1m0ASWZpeY=
93 +go.opentelemetry.io/collector/pdata/pprofile v0.123.0 h1:NjwE1btsQbzOWsIFYt7vfgrqDNCROO3hWiZwT1/KaZU=
94 +go.opentelemetry.io/collector/pdata/pprofile v0.123.0/go.mod h1:af2WDdbCc+JA+FokOnsW3l+agsnW5ed8LkLn6CfneII=
95 +go.opentelemetry.io/collector/pdata/testdata v0.123.0 h1:daMcuywv7L/O0pJMCKzlgsm/En8o7SeMSPWUZsPt+JM=
96 +go.opentelemetry.io/collector/pdata/testdata v0.123.0/go.mod h1:lyARYT+2evYj7EdB0LLuo81lb48P7/yKKT86lRCEsmA=
97 +go.opentelemetry.io/collector/pipeline v0.123.0 h1:LDcuCrwhCTx2yROJZqhNmq2v0CFkCkUEvxvvcRW0+2c=
98 +go.opentelemetry.io/collector/pipeline v0.123.0/go.mod h1:TO02zju/K6E+oFIOdi372Wk0MXd+Szy72zcTsFQwXl4=
99 +go.opentelemetry.io/collector/receiver v1.29.0 h1:HK0bzpRlcqqdWBG2v/N76f0eauN8woIU91LloLLWeGM=
100 +go.opentelemetry.io/collector/receiver v1.29.0/go.mod h1:4QoZQZl4r9bIrKa7VLRw3Rp7++ezc5QoXn9VoPZwfoI=
101 +go.opentelemetry.io/collector/receiver/receivertest v0.123.0 h1:MB2x4v7Pg+npLyIQxBn/7rrW4RliV1JtcKqWM75iz1U=
102 +go.opentelemetry.io/collector/receiver/receivertest v0.123.0/go.mod h1:eDcm8N4yFz//V5dSa6MeEdjuK5Nq1X+j9xP9kPJr8BU=
103 +go.opentelemetry.io/collector/receiver/xreceiver v0.123.0 h1:oRExkR/d5axuvAUa3lcOf1ea+zL0hK+iGAhewqZz1NU=
104 +go.opentelemetry.io/collector/receiver/xreceiver v0.123.0/go.mod h1:M3a0ACBOPHag90EV+GbIWKZhJkHXW7Ka2xabBGY25aw=
105 +go.opentelemetry.io/contrib/bridges/otelzap v0.10.0 h1:ojdSRDvjrnm30beHOmwsSvLpoRF40MlwNCA+Oo93kXU=
106 +go.opentelemetry.io/contrib/bridges/otelzap v0.10.0/go.mod h1:oTTm4g7NEtHSV2i/0FeVdPaPgUIZPfQkFbq0vbzqnv0=
107 go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
108 go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
109 +go.opentelemetry.io/otel/log v0.11.0 h1:c24Hrlk5WJ8JWcwbQxdBqxZdOK7PcP/LFtOtwpDTe3Y=
110 +go.opentelemetry.io/otel/log v0.11.0/go.mod h1:U/sxQ83FPmT29trrifhQg+Zj2lo1/IPN1PF6RTFqdwc=
111 go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
112 go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
113 go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
@@ -153,8 +157,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:
157 google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
158 google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
159 google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
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=
160 +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
161 +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
162 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
163 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
164 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
src/go/otel-collector/release-config.yaml.in
+5 -5
@@ -8,13 +8,13 @@ dist:
8 debug_compilation: @DEBUG_BUILD@
9
10 receivers:
11 - - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.122.0
12 - - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.122.0
11 + - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.123.0
12 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.123.0
13
14 exporters:
15 - - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.122.0
16 - - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.122.0
17 - - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.122.0
15 + - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.123.0
16 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.123.0
17 + - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.123.0
18 - gomod: github.com/netdata/netdata/otel-collector/exporter/journaldexporter v0.0.0
19
20 replaces: