noqqe » blog | sammelsurium | photos | projects | about

Debian | rsyslogd

2009-10-12 @ administration, development, linux

Man erzählt hier ja sonst nichts weiter, warum also nicht mal ein Stück weit Aufklärung. Eigentlich habe ich bei den Bash-Skripten immer eigene Logs geschrieben. Via Stout in ein File ausgegeben. Ziemlich simpel und stupide zugleich. Die zentrale Logverwaltung übernimmt in Debian Lenny ein Daemon. Der Spass heisst ziemlich Daemon untypisch (haha-.-) rsyslogd.

Es besteht also die Möglichkeit diesem Daemon mit einem Programm Meldungen zu übergeben. Das da “logger” heisst. Logger leitet (unter angabe verschiedener Handlingdaten) an den syslog Daemon Nachrichten weiter, die dieser dann anhand von Dringlichkeit und Quelle einordnet. Dringlichkeiten wären zb.

0       Emergency
1       Alert
2       Critical
3       Error
4       Warning
5       Notice
6       Informational
7       Debug

Absteigend sortiert. Ausserdem lässt sich eine Quelle definieren. Welches Programm/Dienst übermittelt diese Nachricht?

0       kernel messages
1       user-level messages
2       mail system
3       system daemons
4       security/authorization messages
5       messages generated internally by syslogd
6       line printer subsystem
7       network news subsystem
8       UUCP subsystem
9       clock daemon
10       security/authorization messages
11       FTP daemon
12       NTP subsystem
13       log audit
14       log alert
15       clock daemon
16       local0
17       local1
18       local2
19       local3
20       local4
21       local5
22       local6
23       local7

So ergibt sich eine Schreibweise wie zb:

logger -p local0.err -t FILEBACKUP Files Backup failed

mit der Quelle local0 und Stufe Error wird nun das Thema FILEBACKUP mit dem Inhalt “Backup failed” an den Daemon. Das wäre jetzt so eigentlich nicht so das phänomenale Überfeature. Allerdings lässt sich unser rsyslogd sagen was wer wie wann wo und warum mit welcher Meldung aus welcher Quelle und mit welcher Stufe er Logmeldungen in welches File verarbeiten soll.

rsyslog.conf
*.err  /var/log/error.log

Gibt zb alle Fehlermeldungen mit Stufe Error oder höher in das nachher angegebene File aus. kernel-messages.* /var/log/kernelmessages, muss ich glaub ich nicht erläutern.

Interagieren mit Logs gefällt mir auf die Weise aufjedenfall besser als echo “ERROR” » /tmp/schauichniewiederan