Schrift
[thread]7385[/thread]

Logdatei aussortieren: Einträge via Perl aus Log extrahieren



<< >> 7 Einträge, 1 Seite
Arrpork
 2005-10-23 13:43
#59149 #59149
User since
2005-10-23
3 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte aus der /var/log/messages immer die Einträge der letzten 5 Minuten genauer auf bestimmte Worte untersuchen. Mein Problem ist das extrahieren der letzten 5 Mintuten unter Perl.

Mein Problem:
1.) Der Übergang einer Stunde, Tag, Woche
2.) Das Logrotate unter Debian

Leider brachte mir das googlen in zu dieser Frage keine Hilfe.
Hat jemand damit schon Erfahrung und kann mir ein paar Tipps geben.

Gruß Arrpork
Ronnie
 2005-10-23 14:10
#59150 #59150
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Evtl. ist es sinnvoll du schaust dich mal nach Alternativen zu syslogd um. Speziell eine Variante die direkt in eine Datenbank z.B. MySQL schreibt könnte deine Arbeit deutlich erleichtern.
Arrpork
 2005-10-23 14:45
#59151 #59151
User since
2005-10-23
3 Artikel
BenutzerIn
[default_avatar]
Hallo Ronnie,

leider ist das wg. versch. Unternehmenspolicys nicht möglich.
Ich darf leider keinen alternativen syslogd benutzen.

Gruß Arrpork
format_c
 2005-10-23 16:14
#59152 #59152
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Kannst du bitte deine probleme genauer erleutern?? Punkt zwei sagt mir naemlich nix da ich kein reines Debian benutze.

Gruß Alex
Arrpork
 2005-10-23 16:56
#59153 #59153
User since
2005-10-23
3 Artikel
BenutzerIn
[default_avatar]
Hallo format_c

logrotate archiviert zu einer bestimmten Zeit das Logfile.

Aus z.B.
"messages" wird "messages.0.gz"
Es wird daraufhin wieder ein "messages" angelegt. In dieses werden dann die neuen Logs reingeschrieben.

Somit kann auf das Logfile nicht mehr (ohne es zuvor zu entpacken) zugegriffen werden.

Mein Ziel ist einfach nachzuschauen, wie oft die letzten 5 Minuten verschiedene Einträge vorkommen um daraus via RRDTool eine Grafik zu erstellen.

Gruß Arrpork
ptk
 2005-10-24 00:34
#59154 #59154
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Arrpork,23.10.2005, 14:56]Aus z.B.
"messages" wird "messages.0.gz"
Es wird daraufhin wieder ein "messages" angelegt. In dieses werden dann die neuen Logs reingeschrieben.

Somit kann auf das Logfile nicht mehr (ohne es zuvor zu entpacken) zugegriffen werden.
[/quote]
Du kannst PerlIO::gzip verwenden, evtl. mit der "auto"-Option. Dann brauchst du dich nicht darum zu kümmern, ob eine Datei komprimiert ist oder nicht.

Beim Analysieren von Logdateien hat sich bei mir oft File::ReadBackwards bewährt (weil man oft nur das Ende der Datei haben will). Ich bezweifle aber, das PerlIO::gzip und File::ReadBackwards zusammen gut arbeiten...
Dubu
 2005-10-24 00:39
#59155 #59155
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wie oft soll dieses Skript denn aufgerufen werden? Jetzt sag nicht, alle 5 Minuten. ;-)

Da du sagst, dass du daraus eine Grafik mit RRDTool erstellen moechtest, tippe ich jedenfalls darauf, dass das Tool nicht nur alle paar Tage oder vielleicht Stunden mal laufen soll, sondern eigentlich permanent. Dann wiederum wuerde ich einfach in die /etc/syslog.conf einen catchall-Eintrag in eine Named Pipe hinzufuegen (syslog konfigurieren darfst du doch, oder?). Die Pipe laesst man permanent von einem Skript einlesen, was dann alle fuenf Minuten die Summary fuer RRDTool ausgeben. Oder so aehnlich.

Unabhaengig davon: Wenn die Logs tatsaechlich mit logrotate gesichert werden, koennte man ueber ein Skript im pre- oder post-rotate (s. Manpage zu logrotate(8)) z.B. einem laufenden Skript ein Signal schicken, damit es das neu angelegte Logfile oeffnet.

Du solltest aber mal nachschauen, ob die Backups wirklich von logrotate angelegt werden. In meinem Debian-System wird das naemlich nicht von logrotate(8), sondern von dem deutlich einfacheren savelog(8) gemacht, das von /etc/cron.weekly/sysklogd aufgerufen wird.
<< >> 7 Einträge, 1 Seite



View all threads created 2005-10-23 13:43.