→ Applies to: SynetoOS 6.x and above
SynetoOS 6 uses rsyslog. The Syneto-supplied ruleset at /etc/rsyslog.d/syneto.conf sorts platform logs into dedicated local files and then stops further processing for each one (& stop). That file is managed by Syneto and must not be edited.
To forward logs off-box, create a new config file that rsyslog loads and applies before syneto.conf. Rsyslog processes files in /etc/rsyslog.d/ in alphabetical order, so a filename like 10-forward.conf loads before syneto.conf and lets you forward a copy of each log before syneto.conf's & stop rules remove it from the pipeline.
NOTE
If the system is part of a 2-node HA/cluster pair, repeat this configuration on both nodes — rsyslog configuration is local to each node.
Available Logs
| Category | Contents | Local file | How rsyslog identifies it |
| Web | Web UI backend (user actions, config changes) | /var/log/web.log | :programname, isequal, "Web" |
| Audit | Audit trail (user operations, API requests) — useful for compliance | /var/log/audit/syneto-audit.log | :programname, isequal, "Audit" |
| CLI | Commands run from the Syneto CLI | /var/log/cli.log | :programname, isequal, "Cli" |
| App | Background daemons / async tasks | /var/log/app.log | :programname, isequal, "App" |
| systemd | General systemd service events | /var/log/systemd.log | :programname, isequal, "systemd" |
| ESXi | Syslog received from ESXi hosts that forward to this node | /var/log/esxi/<host_ip>/message.log | :fromhost-ip, startswith, "<esxi_subnet_prefix>" |
| nginx | nginx access and error logs | /var/log/nginx/access.log, /var/log/nginx/error.log | Not sent to syslog by default — needs an imfile input before it can be forwarded |
| cluster | SynetoOS Edge (Kubernetes) stack: containerd and kubelet | Not written to a dedicated file — currently falls into the general journal/messages stream | :programname, isequal, "containerd" / :programname, isequal, "kubelet" |
| messages | Everything not claimed by a category above (kernel, generic daemons, unclassified services) | /var/log/messages | Default catch-all in /etc/rsyslog.conf: *.info;mail.none;authpriv.none;cron.none |
Step 1. Connect to SynetoOS appliance via SSH as admin
ssh admin@<your_ip_address_or_hostname>
Step 2. Get root privileges
sudo su -
Step 3. Create the Forwarding Config File
vi /etc/rsyslog.d/10-forward.confNOTE
No category is forwarded by default. Uncomment only the rules for the categories you want shipped, including the "forward everything" line if that's the intent.IMPORTANT
Make sure to copy and paste the exact lines below (Replace <remote_syslog_ip> with your log collector's IP and adjust the port if it doesn't listen on 514. Uncomment only the categories you want shipped)# =============================================================== # File: /etc/rsyslog.d/10-forward.conf # Purpose: Forward selected SynetoOS 6 logs to a remote log # collector, BEFORE /etc/rsyslog.d/syneto.conf's # "& stop" rules remove them from the pipeline. # Load order: Processed before /etc/rsyslog.d/syneto.conf # Protocol: TCP (reliable) shown below; use single "@" for UDP # Remote collector: Replace <remote_syslog_ip> with your # destination IP # =============================================================== # --------------------------------------------------------------- # Uncomment this single line to forward EVERYTHING instead of # picking individual categories below. # --------------------------------------------------------------- #*.* @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # Web interface logs # Local path: /var/log/web.log # --------------------------------------------------------------- #:programname, isequal, "Web" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # Syneto Audit logs # Local path: /var/log/audit/syneto-audit.log # --------------------------------------------------------------- #:programname, isequal, "Audit" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # Syneto CLI logs # Local path: /var/log/cli.log # --------------------------------------------------------------- #:programname, isequal, "Cli" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # Syneto App (background tasks) logs # Local path: /var/log/app.log # --------------------------------------------------------------- #:programname, isequal, "App" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # systemd logs # Local path: /var/log/systemd.log # --------------------------------------------------------------- #:programname, isequal, "systemd" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # ESXi logs (hosts forwarding syslog to this node) # Local path: /var/log/esxi/<host_ip>/message.log # --------------------------------------------------------------- #:fromhost-ip, startswith, "<esxi_subnet_prefix>" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # nginx access/error logs # nginx writes these directly to disk, not to syslog, so they # first need to be picked up with imfile before they can be # forwarded. Uncomment the whole block to enable. # Local path: /var/log/nginx/access.log, /var/log/nginx/error.log # --------------------------------------------------------------- #module(load="imfile") #input(type="imfile" File="/var/log/nginx/access.log" Tag="nginx-access" Severity="info" Facility="local0") #input(type="imfile" File="/var/log/nginx/error.log" Tag="nginx-error" Severity="error" Facility="local0") #:programname, startswith, "nginx" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # Cluster logs (SynetoOS Edge / Kubernetes stack: containerd + kubelet) # Currently fall into the general journal / "messages" stream — # these two rules split them out so they can be shipped on their own. # --------------------------------------------------------------- #:programname, isequal, "containerd" @@<remote_syslog_ip>:514 #:programname, isequal, "kubelet" @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # messages (default/general log stream) # Everything not claimed by a category above — mirrors the local # catch-all rule in /etc/rsyslog.conf. # --------------------------------------------------------------- #*.info;mail.none;authpriv.none;cron.none @@<remote_syslog_ip>:514 # --------------------------------------------------------------- # Notes: # - "@@" = TCP (recommended for reliability) # - "@" = UDP (faster, not guaranteed) # - This file runs BEFORE syneto.conf, so any category you # enable here is forwarded before syneto.conf's local # "& stop" rules take effect. # - Enabling "cluster" (containerd/kubelet) and leaving # "messages" enabled too will double-ship those entries, # since they currently land in messages by default. Disable # one or the other if you don't want duplicates. # ---------------------------------------------------------------Save and EXIT
:wq
Step 4. Validate rsyslog changes
rsyslogd -N1
Step 5. Restart rsyslog
systemctl restart rsyslog
Step 6. Check rsyslog status
systemctl status rsyslogEXAMPLE OUTPUT
rsyslogd: End of config validation run.
Step 7. Test Forwarding
logger "Forwarding test message from $(hostname)"Confirm the message arrives on the collector. This only verifies categories covered by the
messagescatch-all or the "forward everything" rule — for nginx or cluster categories, trigger real activity (load the Web UI, or run a containerd/kubelet action) and check it shows up on the collector too.
Troubleshoot Forwarding Issues
Step 1. Inspects the rsyslog service's logs
journalctl -xeu rsyslog
Step 2. Test network reachability to the collector (replace <remote_syslog_ip> and <port> with the correct information)
nc -zv <remote_syslog_ip> <port>
- Confirm the collector is listening on the protocol/port you configured (TCP vs UDP, 514 or otherwise)
- Check local firewalls (firewalld, iptables) aren't blocking outbound traffic to the collector
- Make sure
rsyslogd -N1reports no syntax errors before restartingNOTE
If nginx or cluster entries aren't arriving, verify the source is actually producing log lines (e.g.tail -f /var/log/nginx/access.log) and that the corresponding block in 10-forward.conf is uncommented
Summary
| File | Processed before | Functionality | Default behavior |
/etc/rsyslog.d/10-forward.conf |
/etc/rsyslog.d/syneto.conf |
Forwards selected categories to a remote collector | Inactive until categories are uncommented |
/etc/rsyslog.d/syneto.conf |
- | Sorts platform logs locally and applies & stop filters | Local log isolation (Syneto-managed, do not edit) |
NOTE
- Admins can selectively forward Web, Audit, CLI, App, systemd, ESXi, nginx, cluster, and/or general messages logs to a remote collector over TCP or UDP, without modifying the Syneto-supported
syneto.conf- Categories can be toggled at any time by uncommenting or commenting their rule block and restarting rsyslog
- On HA pairs, apply the same file on both nodes