forked from open-telemetry/opentelemetry-collector-contrib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
syslog.go
72 lines (59 loc) · 2.36 KB
/
syslog.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package datareceivers // import "github.com/open-telemetry/opentelemetry-collector-contrib/testbed/datareceivers"
import (
"context"
"fmt"
"go.opentelemetry.io/collector/component/componenttest"
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/receiver"
"go.opentelemetry.io/collector/receiver/receivertest"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/input/tcp"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver"
"github.com/open-telemetry/opentelemetry-collector-contrib/testbed/testbed"
)
// SyslogDataReceiver implements Syslog format receiver.
type SyslogDataReceiver struct {
testbed.DataReceiverBase
receiver receiver.Logs
protocol string
}
// Ensure SyslogDataReceiver implements LogDataReceiver.
var _ testbed.DataReceiver = (*SyslogDataReceiver)(nil)
// NewSyslogDataReceiver creates a new SyslogDataReceiver that will listen on the
// specified port after Start is called.
func NewSyslogDataReceiver(protocol string, port int) *SyslogDataReceiver {
return &SyslogDataReceiver{DataReceiverBase: testbed.DataReceiverBase{Port: port}, protocol: protocol}
}
// Start the receiver.
func (cr *SyslogDataReceiver) Start(_ consumer.Traces, _ consumer.Metrics, lc consumer.Logs) error {
factory := syslogreceiver.NewFactory()
addr := fmt.Sprintf("127.0.0.1:%d", cr.Port)
cfg := factory.CreateDefaultConfig().(*syslogreceiver.SysLogConfig)
cfg.InputConfig.TCP = &tcp.BaseConfig{
ListenAddress: addr,
}
cfg.InputConfig.Protocol = cr.protocol
set := receivertest.NewNopCreateSettings()
var err error
cr.receiver, err = factory.CreateLogsReceiver(context.Background(), set, cfg, lc)
if err != nil {
return err
}
return cr.receiver.Start(context.Background(), componenttest.NewNopHost())
}
// Stop the receiver.
func (cr *SyslogDataReceiver) Stop() error {
return cr.receiver.Shutdown(context.Background())
}
// GenConfigYAMLStr returns receiver config for the agent.
func (cr *SyslogDataReceiver) GenConfigYAMLStr() string {
// Note that this generates an receiver config for agent.
return fmt.Sprintf(`
syslog:
endpoint: "127.0.0.1:%d"`, cr.Port)
}
// ProtocolName returns protocol name as it is specified in Collector config.
func (cr *SyslogDataReceiver) ProtocolName() string {
return "tcp"
}