Skip to content

Docs: Remote log forwarding doc: fix RFC5424 template and expand guidance #434

@dzarzycki

Description

@dzarzycki

Summary

The Configuring Remote Log Forwarding doc has a template example that fails with strict RFC5424 collectors (Promtail/Loki, Fluent Bit, modern Graylog), and several common topics are missing.

Bugs

1. %PROTOCOL-VERSION% renders as 0 but RFC5424 requires 1

The documented template:

GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% ..."

renders messages as <30>0 2026-04-15T... on the wire. RFC5424 parsers reject version 0 with errors like expecting a version value in the range 1-999 [col 4].

Fix: replace %PROTOCOL-VERSION% with literal 1:

<%PRI%>1 %TIMESTAMP:::date-rfc3339% ...

2. Template name GRAYLOGRFC5424 is misleading

This is standard RFC5424 — not Graylog-specific. The name confuses users sending to Loki, Splunk, or other collectors. Suggest renaming the example to RFC5424 or VERGESYSLOG.

Content gaps

3. Multi-cluster hostname handling

%HOSTNAME% resolves to just node1, node2 — ambiguous when monitoring multiple VergeOS clouds. Document the common patterns:

  • %HOSTNAME% — single-cluster only
  • mycluster-%HOSTNAME% — cluster-prefixed (recommended for multi-cluster)
  • %HOSTNAME%.mycluster.example.com — FQDN style

4. TCP vs UDP trade-off

Currently the doc shows both @@host:514 (TCP) and @host:514 (UDP) but doesn't explain the choice. Add a brief note:

  • TCP (@@) — guaranteed delivery, recommended for audit/compliance
  • UDP (@) — fire-and-forget, lower overhead, can drop packets under load

5. Port 514 assumes root privileges

Most modern collectors run unprivileged (Docker containers, Loki/Promtail) and listen on port 1514 instead. Mention this as a common alternative.

6. Verification guidance is vague

Add concrete troubleshooting steps:

  • tcpdump -i any -A port 1514 on the collector host to confirm packets are arriving
  • Inspect the wire format to catch version-number issues (<PRI>1 for RFC5424, <PRI> alone for RFC3164)

7. Tested collectors section

Add a brief table of known-working targets with config notes:

  • Graylog
  • Loki (via Promtail)
  • Splunk
  • Elasticsearch (via Logstash)
  • Plain rsyslog relay

Recommended canonical template

RFC5424,"<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n"

With a second multi-cluster example showing the hostname prefix pattern.

Context

Encountered while setting up Promtail/Loki for a demo VergeOS cloud. Spent time debugging the version-0 parse errors before capturing the wire format with tcpdump and tracing it back to the documented template.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions