RSyslog-Config für Anfänger

Wenn man auf einem Debian-basierten System mit Syslogs rumbastelt, muss man früher oder später die RSyslog-Doku lesen.

Wer das schonmal probiert hat, ist sich ja darüber im klaren, dass das alles ist, nur nicht trivial.

Um mal ein paar der glorreichen Stellen hervorzuheben:

Direct queues are non-queuing queues.

und an anderer Stelle

If there is a single object absolutely vital to understanding the way rsyslog works, this object is queues (…) I will not describe every specific detail of queue operation (…)

Richtig wirr wird es dann, wenn noch lustige Grafiken dazu kommen

note that the colors in the pictures below are not related to the colors in the pictures above!

Spätestens hier weiß man dann garnicht was man eigentlich wollte.

Nun gut.

Szenario: Wir wollen RSyslog in eine MySQL schreiben lassen und sinnvollerweise dafür sorgen, dass das Syslog auch dann nicht kaputt geht wenn die Datenbank mal was besseres zu tun hat.

Der Plan sieht also vor, dass wir das Syslog nehmen, rsyslog-mysql installieren (und vorher sinnvollerweise den mysql-server wenn das denn auf der gleichen Maschine in die Datenbank soll) und dann in die /etc/rsyslog.d/mysql.conf zwischen den ModLoad für ommysql und das wegschreiben in die Datenbank noch folgendes reinschreiben:

$ModLoad imuxsock
$WorkDirectory /var/log
$ActionQueueType LinkedList
$ActionQueueFileName mysqlqueue
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on

Das sorgt jetzt dafür, dass der Kram wenn die DB nicht antwortet in einer Linked-List-Queue landet. Dadurch, dass da noch ein WorkDirectory und vor allem ein ActionQueueFileName steht wird dann aus der Linked-List-Queue eine Disk-Assisted-Linked-List-Queue, das puffert also in /var/log/mysqlqueue den ganzen Kram zwischen.
Der ResumeRetryCount sorgt dafür, dass der Rechner ewig weiterprobiert den Kram zu schreiben, der SaveOnShutdown sollte selbsterklärend sein.

Der Queue-Teil sollte natürlich wenn man das Syslog über UDP oder TCP überträgt auch noch davor, damit puffern die auch zwischen wenn mal das Netz nicht geht.

Falls jemand das mysql-high-performance-HowTo gelesen hat: Das was hier steht kommt dabei raus, wenn man das richtig macht, hier ist das nämlich in einer ActionQueue und nicht in der MainMsgQueue drin, wenn man in der MainMsqQueue einen Puffer einbaut bleibt einem das komplette Syslog stehen, die ActionQueues sind eigene Datensenken und machen das nicht (also eigentlich genau das was man an der Stelle will, warum das in dem HowTo erst falsch beschrieben ist und dann druntersteht, dass das nicht so toll ist hab ich nicht so ganz verstanden)

Über Yetiszaf

Veranstaltungstechniker, Sysadmin, Fotograf – das Yetiszaf
Dieser Beitrag wurde unter *nix-wissen, Job, Kleinkram abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.