Rsyslog Eigene Regeln
Eigene Regeln
Einfache Regeln
Programname
- Logfile for tftpd
if $programname == 'in.tftpd' then /var/log/tftpd.log
facility-text
- 60-meinlog.conf
if $syslogfacility-text == 'local3' then /var/log/meinelog
- systemctl restart rsyslog.service
- echo "Hallo Welt" | logger -p local3.warn
- tail -n 1 -f /var/log/meinelog
Sep 5 14:21:04 bajor root: Hallo Welt
contains
expressions in parenthesis
- not, unary minus
- *, /, % (modulus, as in C)
- +, -, & (string concatenation)
- ==, !=, <>, <, >, <=, >=, contains (strings!), startswith (strings!)
- and
- or
legacy rsyslog
Beginnen mit einem $-Zeichen. Zum Setzen von Konfigurationsparametern.
$FileOwner syslog
RainerScript
Neues Format.
Generator für eine Konfigurationsdatei: http://www.rsyslog.com/rsyslog-configuration-builder/
Templates - Anpassen des Ausgabeformates
$template MyOwnFormat,"Debug line with all properties:\nFROMHOST: '%FROMHOST%', HOSTNAME: '%HOSTNAME%', PRI: %PRI%,\nsyslogtag '%syslogtag%', programname: '%programname%', APP-NAME: '%APP-NAME%', PROCID: '%PROCID%', MSGID: '%MSGID%',\nTIMESTAMP: '%TIMESTAMP%', STRUCTURED-DATA: '%STRUCTURED-DATA%', \nmsg: '%msg%'\nescaped msg: '%msg:::drop-cc%'\nrawmsg: '%rawmsg%'\n\n" *.*;auth,authpriv.none /var/log/syslog;MyOwnFormat
Im Raw format
Logs sowohl lokal als auch remote speichern
Um Logs sowohl lokal als auch an einen Remote-Host zu senden, kann die Konfiguration wie folgt angepasst werden:
- Beispiel: Authentifizierungs- und Sicherheitsmeldungen lokal und remote speichern
if $syslogfacility-text == 'auth' or $syslogfacility-text == 'authpriv' then {
action(type="omfwd" target="server_host" port="514" protocol="tcp")
action(type="omfile" file="/var/log/auth.log")
}
Ersetzen Sie `server_host` durch die IP-Adresse oder den Hostnamen des Remote-Servers.
- Beispiel: Nur Meldungen einer bestimmten Anwendung (z.B. `apache2`) senden
if $programname == 'apache2' then {
action(type="omfwd" target="server_host" port="514" protocol="tcp")
action(type="omfile" file="/var/log/apache2.log")
}
- Lokale Speicherung aller anderen Logs sicherstellen
- .*;auth,authpriv.none -/var/log/syslog
Remote Logging nur für bestimmte Logs
Um sicherzustellen, dass nur bestimmte Logs an einen Remote-Host gesendet werden, während andere Logs lokal gespeichert werden:
- Beispiel: Nur lokale3-Meldungen an den Remote-Host senden
if $syslogfacility-text == 'local3' then {
action(type="omfwd" target="server_host" port="514" protocol="tcp")
action(type="omfile" file="/var/log/meinelog")
}
Remote Logging aktivieren
Um Remote Logging zu aktivieren, muss der Server so konfiguriert sein, dass er Logs empfängt, und der Client so konfiguriert sein, dass er Logs sendet.
- Server-Host Konfiguration:
module(load="imtcp") input(type="imtcp" port="514")
- Client-Host Konfiguration:
- .* @@server_host:514
Testen der Konfiguration
Um sicherzustellen, dass die Konfiguration funktioniert: 1. Senden Sie eine Testnachricht vom Client-Host:
echo "Test log message" | logger
2. Überprüfen Sie auf dem Server-Host, ob die Nachricht empfangen wurde:
tail -f /var/log/syslog
Mit diesen Beispielen und Anleitungen sollte es einfacher sein, `rsyslog` entsprechend Ihren Anforderungen zu konfigurieren.