Snippets · Sources
Receive syslog (RFC 5424 and RFC 3164)
Network gear and legacy hosts speak syslog and nothing else. You need RFC 5424 and RFC 3164 on the same collector without losing the priority and facility fields.
- Signals
- Logs
- Category
- CollectionParsing
- Source
- Syslog
- Destination
- OTLP/HTTP endpoint
receivers:
syslog/rfc5424:
tcp:
listen_address: 0.0.0.0:54526
protocol: rfc5424
syslog/rfc3164:
udp:
listen_address: 0.0.0.0:54527
protocol: rfc3164
location: UTC
processors:
memory_limiter:
check_interval: 1s
limit_percentage: 80
batch: {}
exporters:
otlphttp:
endpoint: https://your-backend:4318
service:
pipelines:
logs:
receivers: [syslog/rfc5424, syslog/rfc3164]
processors: [memory_limiter, batch]
exporters: [otlphttp]
// stability: public-preview — start Alloy with --stability.level=public-preview,
// or it exits at startup instead of running without the component.
otelcol.receiver.syslog "rfc5424" {
protocol = "rfc5424"
tcp {
listen_address = "0.0.0.0:54526"
}
output {
logs = [otelcol.processor.memory_limiter.default.input]
}
}
otelcol.receiver.syslog "rfc3164" {
protocol = "rfc3164"
location = "UTC"
udp {
listen_address = "0.0.0.0:54527"
}
output {
logs = [otelcol.processor.memory_limiter.default.input]
}
}
otelcol.processor.memory_limiter "default" {
check_interval = "1s"
limit_percentage = 80
output {
logs = [otelcol.processor.batch.default.input]
}
}
otelcol.processor.batch "default" {
output {
logs = [otelcol.exporter.otlphttp.default.input]
}
}
otelcol.exporter.otlphttp "default" {
client {
endpoint = "https://your-backend:4318"
}
}
Alloy runs components below generally-available only when you ask it to, so start it with --stability.level=public-preview. Without the flag Alloy exits at startup instead of running with the component disabled.
Complete config files, each checked with the tool's own validate command (otelcol-contrib v0.161.0, Grafana Alloy v1.19.2). Replace https://your-backend:4318 with your own OTLP endpoint before you run it.
The gotcha
RFC 3164 timestamps carry no year, so the collector assumes the current one, which silently misdates logs sent across a new-year boundary.
Skip the YAML on every host
LinkMesh has this job built in as the Syslog TCP and Syslog UDP source templates: activate it on a collector from the control plane instead of editing config files host by host. The first 25 Collectors are free after a no-card registration in the OpenSight Customer Portal (5 without one).
Related snippets
- Tail a log fileShip an application log file to your backend, and keep your place in it across collector restarts.
- Receive OTLP over gRPC and HTTPThe front door: accept OTLP from SDKs and other collectors, on both transports, for all three signals.
- memory_limiter and batch, in the right orderThe two processors every pipeline needs, so a traffic spike neither kills the collector nor floods the backend.