Re: logging

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Thu, 8 Mar 2007 09:59:58 +0100 (CET)

J. Erik Heinz wrote:
> Ich schreibe mir ab und an einige scripts die dies und jenes machen.
> Dabei hab ich mir angewohnt logfiles zu schreiben. Die fliegen jedoch
> noch uneinheitlich in /var/log/ rum.
>
> und Sie werden nicht ausgewertet. Mit auswerten meine ich, das wenn in
> einem Logfile ein Fehler auftritt, das ich benachrichtig werden ( mail
> .o.ae )

ports/misc/logsurfer

Das ist ein kleines Tool, das Du auf Deine Logdateien an-
setzen kannst. Man kann es mit Regeln und regulären Aus-
drücken konfigurieren und damit beliebig komplexe Über-
wachungsaufgaben für Logfiles machen. Da es in C geschrie-
ben ist, ist es ziemlich effizient.

Es lohnt sich, die Manpages durchzulesen (logsurfer(1) und
logsurfer.conf(4); sie sind nicht allzu lang), um alle
Möglichkeiten kennenzulernen.

Typische Dinge sind, dass man sich eine E-Mail schicken
lässt, wenn in den messages eine Festplatte einen Read-
Error meldet, oder wenn gmirror loggt, dass eine Komponente
aus einem Mirror ausgehängt wurde. Oder einfach, wenn
irgendwelche unvorhergesehenen Meldungen auftauchen, die
keinem bekannten »harmlosen« Muster entsprechen.

Aber auch kompliziertere Dinge gehen, zum Beispiel kann
man sagen: Schick mir eine E-Mail, falls im auth.log ein
Failed-login erscheint (möglicher Einbruchsversuch), außer,
wenn sich derselbe User innerhalb einer Minute erfolgreich
einloggt (dann war's wohl nur ein Vertipper).

Mehrere Zeilen (die nicht zusammenhängend sein müssen)
lassen sich in sogenannte »Contexts« zusammensammeln, so
dass auch mehrzeilige, zusammengehörige Log-Einträge bear-
beitet werden können. Auf diese Weise kann man z.B. in der
Log-Datei eines ftpd-Servers alle Einträge, die zurselben
FTP-Session gehören, zusammenfassen (z.B.: Falls sich
jemand von *.sco.com einloggt und dann später versucht,
irgendwas von /ibm/private herunterzuladen, dann schicke
eine Mail an lawyer@, die alle Log-Zeilen enthält, die zu
dieser Session gehören).

Ein Context kann auch einen Timeout haben. Beispiel: Ich
habe syslogd(8) so konfiguriert, dass alle 20 Minuten eine
»MARK«-Zeile geschrieben wird. Per logsurfer.conf wird bei
so einer Zeile ein Context erzeugt, der nach der nächsten
»MARK«-Zeile Ausschau hält und einen Timeout von 21 Minuten
hat. Läuft der Timeout aus, wird eine Alarm-Mail ver-
schickt, da dann offenbar der syslogd-Prozess gestorben
ist.

Und schließlich kann man auch dynamische Regeln zur Lauf-
zeit erzeugen (und wieder entfernen), in Abhängigkeit von
anderen Regeln und Timeouts. Beispiel: Du hast ein Pro-
gramm, das ab und zu mal hakelt und dann irgendwas mit
»retrying« loggt. Meistens richtet es sich dann von selbst
wieder (und loggt dann nichts weiter), aber manchmal eben
auch nicht, und es kommt immer wieder »retrying«. Beispiel
aus der Praxis: »getty repeating too quickly on port xxx,
sleeping yyy secs« von init(8). Da kannst Du z.B. eine
Regel einrichten, die eine dynamische Regel mit Timeout
(60 Sekunden o.ä.) erzeugt. Kommt innerhalb dieser 60 Se-
kunden nichts weiter, löscht sich die Regel wieder, ohne
dass etwas passiert. Kommt dagegen erneut etwas mit dem-
selben »port xxx«, wird eine E-Mail verschickt, damit man
mal guckt, was dort faul ist.

Anstelle von E-Mails kann man natürlich auch beliebige an-
dere Aktionen machen, z.B. ein externes Tool aufrufen, das
eine SMS verschickt, oder einen SNMP-Trap generieren, oder
einen Totenkopf auf /dev/lpt0 ausdrucken, oder oder ...
Logsurfer arbeitet auf beliebigen Dateien, also nicht nur
Log-Dateien, und kann auch von stdin lesen.

Wie Du vielleicht inzwischen erkannt hast, finde ich log-
surfer äußerst praktisch und kann es nur empfehlen. :-)

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
"When your hammer is C++, everything begins to look like a thumb."
        -- Steve Haflich, in comp.lang.c++
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 08 Mar 2007 - 10:01:27 CET

search this site