Ab jetzt füttert Perl die Datenbank

So, endlich mal wieder eine durchgemachte Nacht vor dem Rechner. Das ist schon ewig her… damals, die Beta-Tage von World of Warcraft. Naja, aber das Spiel wurde langweilig und zäh… und nun hält mich wieder die Arbeit zu spät fortgeschrittener Stunde vor dem Monitor.

Die Idee mit dem Perl-Daemon habe ich wieder fallen gelassen: Hatte ihn zwar schon fertig (irgenwie sind das nicht mehr als acht Zeilen billigsten Codes), aber dann dachte ich mir, dass es der gute cron-Job auch tut.

Der läuft jetzt jede Minute durch und aktiviert das Perl-Skript, welches dann seinerseits die log-Dateien, die der syslog-ng anlegt in die Postgres-Datenbank transferiert. Auch bei Hochbetrieb sollte das Skript schnell genug durchlaufen, um durch zu sein, bevor der cron es wieder aufrufen will (selbst wenn nicht, sollte es dank flock eigentlich kein Problem darstellen…tja, Naivität ist machmal was Feines).

Zugrunde liegt die Fähigkeit des syslog-ng, die Ausgabe-Dateien mittels templates zu bauen, also z.B. Hostname||Zeit||Msg-Text usw. Diese Dateien öffnet das Perl-Skript der Reihe nach ein, lockt den Zugriff exklusiv und liest sie dann Zeile für Zeile ein. Der Befehl split teilt die Zeile dann in Variablen auf, welche schließlich mit DBI:Pg in die syslog-Datenbank geschrieben werden.

Das alles konnte das bash-Skript vorher auch (zumindest ähnlich), aber mit perl geht der ganze Transfer merklich schneller zu Rande und - der Hauptgrund: Bis jetzt gab es Probleme mit manchen Rechner, wo deren Name entweder in der /etc/hosts stand oder aber auf denen ein DNS lief.

Der syslog-ng setzt dann nämlich anstelle der IP-Adresse den Hostnamen in das template-Feld host. Was in meinem speziellen Fall denkbar ungünstig ist, da die Tabellen nach den Ips benannt sind… :-) Dieses Problem habe ich jetzt darüber gelöst, dass ich innerhalb des Skriptes teste, ob im host-Feld auch wirklich eine IP steht. Wenn nicht, wird der Hostname mittels Perl in die jeweile IP umgesetzt und die Wiese ist grün.

So, bleibt als nächstes auf der Liste die Übersicht über die letzte Einlog-Zeit auf den Rechner und eine Auslastungs-Statistik. Es bleibt also spannend…