Skip to content

Syslog

HeliosLogs can receive syslog directly over the network — no JSON wrapping or log shipper required. Point network devices, appliances, or an rsyslog/syslog-ng forwarder at it. Configure the listener under Admin → Data Ingestion → Syslog.

Admin → Data Ingestion → Syslog: enable toggle, listener ports, default target, and routing rules

No authentication on the syslog port

Unlike the HTTP endpoints, the syslog listener has no token auth — anything that can reach the port can write to the configured env/index. Bind it to a trusted interface and firewall it accordingly. The sender's IP is recorded as the per-event source.

The listener

When enabled, HeliosLogs binds a UDP and a TCP listener. TCP uses RFC 6587 framing (octet-counting, or newline-delimited), so long messages aren't truncated; a single UDP datagram may carry several newline-separated lines.

SettingDefaultMeaning
EnabledoffWhether the listener binds at all.
Bind address0.0.0.0Interface to bind.
UDP port5514UDP listen port (0 = off).
TCP port5514TCP listen port (0 = off).
Default environmentdefaultWhere unmatched messages land.
Default indexsyslogIndex for unmatched messages.
Routing rulesOrdered rules (below).

Ports below 1024 (e.g. the standard 514) usually need elevated privileges; 5514 binds without root. Changing the bind address or ports rebinds the sockets within a few seconds.

Port override per host

The --syslog-port flag (or HELIOS_SYSLOG_PORT) overrides the control-plane UDP and TCP ports — handy when running several instances on one host. Set it to 0 to disable the listener.

Parsed fields

Both RFC 5424 and RFC 3164 are parsed. HeliosLogs decomposes the priority into facility and severity and extracts the standard fields, all queryable like any other:

FieldSource
timestampThe message timestamp.
messageThe message body.
hostHostname.
appnameAPP-NAME (5424) or tag (3164).
procidPROCID (5424) or PID (3164).
facilityPriority ÷ 8.
severityPriority mod 8.

Anything that doesn't parse as syslog is preserved as a message.

Routing rules

Routes decide which (env, index) a message lands in. Each rule matches one field with one operator; the first matching rule wins, otherwise the default env/index applies. A rule with a blank env or index inherits the default.

Matchable fields: host, appname, facility, severity, message, source_ip.

OperatorMatch
equalsCase-insensitive exact match.
containsCase-insensitive substring.
regexRegular expression (an invalid regex is skipped, not fatal).

For example:

  • appname equals sshd → index ssh
  • severity regex ^[0-3]$ (emergency…error) → env prod, index urgent
  • anything else → the default env/index

Pointing a sender at HeliosLogs

rsyslog, forwarding all messages over TCP:

*.* @@helios.example.com:5514

(Use a single @ for UDP.) Then add routes in the admin UI to split traffic into the right indexes.