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: