LinkMesh

Search docs, blog and changelog

ENDE

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
OpenTelemetry Collector YAML
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]
Grafana Alloy
// 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).