Skip to content

Commit a58bb19

Browse files
authored
Add journald log collection support
1 parent 80d70e9 commit a58bb19

60 files changed

Lines changed: 3400 additions & 13 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

extension/agenthealth/handler/useragent/useragent.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ func (ua *userAgent) SetComponents(otelCfg *otelcol.Config, telegrafCfg *telegra
134134
}
135135
}
136136
}
137+
// Add journald status
138+
ua.setJournaldFeatureFlags(otelCfg)
137139

138140
if !ua.isRoot {
139141
ua.inputs.Add(flagRunAsUser)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//go:build linux
2+
3+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4+
// SPDX-License-Identifier: MIT
5+
6+
package useragent
7+
8+
import (
9+
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver"
10+
"go.opentelemetry.io/collector/otelcol"
11+
)
12+
13+
const (
14+
flagJournaldEnabled = "jd_enabled"
15+
)
16+
17+
func (ua *userAgent) setJournaldFeatureFlags(otelCfg *otelcol.Config) {
18+
for _, cfg := range otelCfg.Receivers {
19+
if _, ok := cfg.(*journaldreceiver.JournaldConfig); ok {
20+
ua.feature.Add(flagJournaldEnabled)
21+
return
22+
}
23+
}
24+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
//go:build linux
2+
3+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4+
// SPDX-License-Identifier: MIT
5+
6+
package useragent
7+
8+
import (
9+
"testing"
10+
11+
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver"
12+
"github.com/stretchr/testify/assert"
13+
"go.opentelemetry.io/collector/component"
14+
"go.opentelemetry.io/collector/otelcol"
15+
)
16+
17+
func TestSetJournaldFeatureFlags(t *testing.T) {
18+
tests := []struct {
19+
name string
20+
receivers map[component.ID]component.Config
21+
expectedFlags []string
22+
}{
23+
{
24+
name: "no receivers",
25+
receivers: map[component.ID]component.Config{},
26+
expectedFlags: []string{},
27+
},
28+
{
29+
name: "journald enabled",
30+
receivers: map[component.ID]component.Config{
31+
component.MustNewID("journald"): &journaldreceiver.JournaldConfig{},
32+
},
33+
expectedFlags: []string{flagJournaldEnabled},
34+
},
35+
}
36+
37+
for _, tt := range tests {
38+
t.Run(tt.name, func(t *testing.T) {
39+
ua := newUserAgent()
40+
otelCfg := &otelcol.Config{
41+
Receivers: tt.receivers,
42+
}
43+
44+
ua.setJournaldFeatureFlags(otelCfg)
45+
46+
for _, flag := range tt.expectedFlags {
47+
assert.Contains(t, ua.feature, flag)
48+
}
49+
assert.Len(t, ua.feature, len(tt.expectedFlags))
50+
})
51+
}
52+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//go:build !linux
2+
3+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4+
// SPDX-License-Identifier: MIT
5+
6+
package useragent
7+
8+
import (
9+
"go.opentelemetry.io/collector/otelcol"
10+
)
11+
12+
func (ua *userAgent) setJournaldFeatureFlags(_ *otelcol.Config) {
13+
// No-op on non-Linux platforms
14+
}

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ require (
180180
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.124.1
181181
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.124.1
182182
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.124.1
183+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.124.1
183184
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.124.1
184185
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.124.1
185186
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.124.1

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,6 +1332,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsre
13321332
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.124.1/go.mod h1:3MmO+ZJLcTPyYUk8tENgen4dnmiodTfQSHokwlvNZ+A=
13331333
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.124.1 h1:r20zOMMBcxzI2Sni2HyTR7TVxuNXLn1Ov6qtnlVWoJc=
13341334
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.124.1/go.mod h1:1UsKa4xSNodA2i6ic5mmyd31khXyTGxsVKJoKmq/jtU=
1335+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.124.1 h1:uJNR6ZVhQaw6ziX/gFeVm8txdNQ3YQk3azSjLcTGop8=
1336+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.124.1/go.mod h1:CwbTbJLDvssj8NBQFnKKvugrKJSwODHCwTbwF+s3nWY=
13351337
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.124.1 h1:Pdlf5D5gB/5Khi3t5PiojQrCulcEejecsxoSpOd0ekA=
13361338
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.124.1/go.mod h1:pKNXK34B2dV0nEDAFgHtYQHBlZpQlLWcKFZpblY3xQs=
13371339
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.124.1 h1:/dcNbFj4cFZRXDmyBYTFT6+lclunY9slInimPIHqWj0=

service/defaultcomponents/components.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import (
4848
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver"
4949
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver"
5050
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver"
51+
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver"
5152
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver"
5253
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver"
5354
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver"
@@ -104,6 +105,7 @@ func Factories() (otelcol.Factories, error) {
104105
filelogreceiver.NewFactory(),
105106
hostmetricsreceiver.NewFactory(),
106107
jaegerreceiver.NewFactory(),
108+
journaldreceiver.NewFactory(),
107109
jmxreceiver.NewFactory(),
108110
kafkareceiver.NewFactory(),
109111
kubeletstatsreceiver.NewFactory(),

service/defaultcomponents/components_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ func TestComponents(t *testing.T) {
2828
"filelog",
2929
"hostmetrics",
3030
"jaeger",
31+
"journald",
3132
"jmx",
3233
"kafka",
3334
"kubeletstats",

tool/data/config/logs.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,10 @@ func (config *Logs) AddWindowsEvent(eventName, logGroupName, logStream, eventFor
4747
}
4848
config.LogsCollect.AddWindowsEvent(eventName, logGroupName, logStream, eventFormat, eventLevels, eventIDs, filters, retention, logGroupClass)
4949
}
50+
51+
func (config *Logs) AddJournald(logGroupName, logStream string, units []string, priority string, matches []map[string]string, filters []*logs.JournaldFilter, retention int) {
52+
if config.LogsCollect == nil {
53+
config.LogsCollect = &logs.Collection{}
54+
}
55+
config.LogsCollect.AddJournald(logGroupName, logStream, units, priority, matches, filters, retention)
56+
}

tool/data/config/logs/collection.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ type Collection struct {
1313
Files *Files
1414
// windows events
1515
WinEvents *Events
16+
// journald logs
17+
Journald *Journald
1618
}
1719

1820
func (config *Collection) ToMap(ctx *runtime.Context) (string, map[string]interface{}) {
@@ -27,6 +29,10 @@ func (config *Collection) ToMap(ctx *runtime.Context) (string, map[string]interf
2729
util.AddToMap(ctx, resultMap, config.WinEvents)
2830
}
2931

32+
if config.Journald != nil {
33+
util.AddToMap(ctx, resultMap, config.Journald)
34+
}
35+
3036
return "logs_collected", resultMap
3137
}
3238

@@ -43,3 +49,10 @@ func (config *Collection) AddLogFile(filePath, logGroupName, logStreamName strin
4349
}
4450
config.Files.AddLogFile(filePath, logGroupName, logStreamName, timestampFormat, timezone, multiLineStartPattern, encoding, retention, logGroupClass)
4551
}
52+
53+
func (config *Collection) AddJournald(logGroupName, logStreamName string, units []string, priority string, matches []map[string]string, filters []*JournaldFilter, retention int) {
54+
if config.Journald == nil {
55+
config.Journald = &Journald{}
56+
}
57+
config.Journald.AddJournald(logGroupName, logStreamName, units, priority, matches, filters, retention)
58+
}

0 commit comments

Comments
 (0)