syslog source emits.
Prerequisites
- A running Rootprint instance. Substitute its host for
<your-rootprint>. - A Linux host running
rsyslog(the default on Debian, Ubuntu, RHEL and derivatives). If you runjournaldonly, see If you only run journald below. - A host to run Vector on. It can be the same machine that produces the logs, or a central relay that many machines forward to.
Setup
1
Create the syslog index
In Settings → Indexes → Create index, set the index ID to
syslog, mode to dynamic, and the timestamp field to ts. Add these fields:Under the optional settings, add
appname, facility and severity as tag fields.dynamic mode keeps undeclared fields searchable: RFC5424 structured data (in a field named after its SD-ID) and the source_ip that Vector attaches to each record.2
Map the display roles
On the new index’s Configuration tab, set the field-role mappings so the Logs page knows how to render a record:
- Log level →
severity - Message →
message
severity_text, body.message), so records look blank until you change them.3
Create an ingest API key
In Settings → API keys, click Create ingest key and pick the
syslog index. Copy the rp_… key for the Vector config. See API keys.4
Configure Vector
Install Vector from the official installation page, then save this at Port
/etc/vector/vector.yaml. Replace <your-rootprint> and <your-ingest-api-key>.Then restart it:5514 rather than 514: Vector runs as the unprivileged vector user and cannot bind a port below 1024. If a sender has 514 hard-coded, grant CAP_NET_BIND_SERVICE with a systemd override instead of running Vector as root.5
Point rsyslog at Vector
Save this as
/etc/rsyslog.d/90-rootprint.conf, replacing <vector-host> with the machine running Vector (127.0.0.1 if it’s the same one):RSYSLOG_SyslogProtocol23Format makes rsyslog send RFC5424 instead of RFC3164.*.* forwards everything. To send less, narrow the selector: auth,authpriv.* for authentication records, or local7.* if you route application logs to a local facility.6
Verify in Rootprint
Send a test record:Open Logs, pick
syslog from the index selector, and query hello from rsyslog. Allow a few seconds for the record to become searchable.If you only run journald
Modern distributions runsystemd-journald, sometimes without rsyslog. Have journald forward its records to syslog. In /etc/systemd/journald.conf:
rsyslog if it isn’t present. The configuration above applies unchanged.
Troubleshooting
- Nothing arrives: check that rsyslog can reach Vector.
ss -tnp | grep 5514on the rsyslog host should show an established connection. On a central relay, suspect a firewall between the two. 403from the NDJSON gateway: the ingest API key is wrong or revoked. If the config reads the key from${VAR}, setVECTOR_DANGEROUSLY_ALLOW_ENV_VAR_INTERPOLATION=truein Vector’s environment.- Records arrive but
tsis wrong or missing: the sender uses RFC3164, which has no structured data and a lower-resolution timestamp. Confirm thetemplate="RSYSLOG_SyslogProtocol23Format"line is present. - The program name appears in
hostname, and the hostname inappname: an application (nginx, for example) writes its own syslog frames to/dev/log. Point it at127.0.0.1:514over UDP and loadimudpin rsyslog instead.
Related
- Send logs over HTTP: the endpoint this guide posts to
- Create a custom index: the full field-editor reference
- Manage indexes: field-role mapping
- Send logs with Vector: Vector install,
systemdand Docker setup - Search query syntax: querying the fields above

