rsyslog is an open-source implementation of syslog protocol / rfc3164 and extends it with content-based filtering, rich filtering capabilities, flexible configuration options and adds features such as using TCP for transport. Its used prior to migration to systemd-journald.
- Facility level is type of processes to monitor: auth, cron, daemon, kernel, local0..local7
- Severity/Priority level is type of log message: emerg/0, alert/1_, crit/2, err/3, warn/4, notice/5, info/6, debug/7
- Destination is either local file or remote rsyslog server @ip:port
As a rsyslog client it can filter and sends internal log messages to either local file system or a remote rsyslog server. As rsyslog server it collects logs from other hosts and sends them into internal log messages. See syslogserver@windows.
$ yum install rsyslog | apt-get install rsyslog | pacman -S rsyslog ##(server) enable listener $(host1) vi /etc/rsyslog.conf # udp $ModLoad imudp $UDPServerRun 514 # tcp (slower but more reliable) $ModLoad imtcp $InputTCPServerRun 514 ##(server) create template to log to filesystem # see http://linux.die.net/man/5/rsyslog.conf $(host1) vi /etc/rsyslog.d/remote_host # log everything to 'host/progname.log' $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" * # format it '[facility-level].[severity-level] ?RemoteLogs' *.* ?RemoteLogs # stop processing messages & ~ # same but using ip $ vi /etc/rsyslog.d/remote_ip $template IpTemplate,"/var/log/%FROMHOST-IP%.log" *.* ?IpTemplate & ~ ##(client) route all messages to remote server $(host2) vi /etc/rsyslog.d/route_all *.* @host1:514 # same but using tcp instead #*.* @@host1:514 # same but only for some kernel facility kern.* @192.168.1.25:514 $(both) service rsyslog restart | systemctl restart rsyslog
from rsyslog server@xmodulo and rsyslog client@xmodulo
syslog(3) is the syscall used to send messages to system logger. There are wrappers in all languages, including shells
## from shell
# see http://linux.die.net/man/1/logger
$ logger -p local0.info -t PROGNAME MESSAGE
## forward journald to local syslog daemon
# see http://www.freedesktop.org/software/systemd/man/journald.conf.html
$ vi {/etc,/run,/usr/lib}/systemd/journald.conf.d/*.conf
ForwardToSyslog=True
# same as kernel command line option 'systemd.journald.forward_to_syslog=True'