Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Programmieren<br />
www.linux-magazin.de Perl-Snapshot 09/2013<br />
106<br />
Splunk-SDK Client-Libraries für Python,<br />
Java, Javascript, PHP, Ruby und C# beiliegen,<br />
fehlt ihm ein Perl-Kit. Auf dem<br />
CPAN lagert zwar ein Modul, es arbeitet<br />
jedoch nicht mit der Splunk-Version 5 zusammen.<br />
REST-Abfragen sind zum Glück<br />
einfach zu programmieren, deshalb setzt<br />
Listing 1 auf dieser Schicht auf.<br />
Suchen mit Fernbedienung<br />
Die »post()«-Methode in Zeile 41 setzt<br />
eine Suche beim Splunk-Server ab. Im<br />
Gegensatz zum Web-GUI leitet »search«<br />
hier das Kommando an den Server ein.<br />
Neben dem schon erläuterten Filter »NOT<br />
eventtype=chatter« definiert es die Einschränkung<br />
»earliest=‐24h«, fragt also<br />
nur nach Events der letzten 24 Stunden.<br />
Das Ergebnis möge Splunk dem Parameter<br />
»output_mode« gemäß im Json-<br />
Format liefern. Wer ellenlange E-Mails<br />
vermeiden will, sollte die Zahl der Treffer<br />
mit »limit=« auf 50 begrenzen.<br />
Die Funktion »from_json()« aus dem<br />
CPAN-Modul JSON wandelt in Zeile 58<br />
die Ergebnisse zeilenweise in Perl-Datenstrukturen<br />
um. Für die auszusendende<br />
Mail sind drei Felder zentral: Der Zeitstempel<br />
des Logeintrags mit dem Schlüssel<br />
»_time«, die Logdatei unter »source«<br />
und die ursprüngliche Logzeile in »_raw«.<br />
Das CPAN-Modul Net::SMTP schickt die<br />
Mail mit dem Suchergebnis an den unter<br />
»$to_email« eingetragenen Empfänger.<br />
Den SMTP-Server »$smtp_server« hat<br />
Zeile 20 vorher gesetzt.<br />
Für Dinosaurier und Hipster<br />
Aufwändige HTML-Nachrichten verärgern<br />
alte Zausel wie mich, die einen<br />
Abbildung 7: Textbasierte Formatierung für einen ehrwürdigen Mailer wie Alpine.<br />
textbasierten E-Mail-Reader wie Pine verwenden.<br />
Umgekehrt ist für jung-dynamische<br />
Outlook- und Thunderbird-Klicker<br />
eine Plaintext-E-Mail alte Schule.<br />
Um zwischen beiden Welten zu vermitteln,<br />
formatiert Listing 1 das tabellenartige<br />
Ergebnis der Suchanfrage mit Hilfe<br />
des CPAN-Moduls Text::ASCIITable als<br />
Ascii-Text. Damit die Zeitstempel-Spalte<br />
nicht ausufert, sondern umbrochen wird,<br />
begrenzt Zeile 53 ihre Breite auf maximal<br />
zehn Zeichen. Ähnliches gilt für die<br />
Spalte mit dem gefundenen Logeintrag,<br />
die bei einer Zeilenlänge von 34 umbricht,<br />
damit die Nachrichten auf Mobiltelefonen<br />
gut lesbar bleiben.<br />
Moderne Mailmänner und ‐frauen bevorzugen<br />
dagegen HTML, und um sie zu befriedigen,<br />
ruft Zeile 68 das CPAN-Modul<br />
Email::MIME zu Hilfe. Es verpackt den<br />
vorhandenen Ascii-Text als Inline-HTML,<br />
umrankt von einfachen »pre«-Tags. So<br />
sieht das Ergebnis sowohl unter Pine<br />
(Abbildung 7) als auch mit Gmail (Abbildung<br />
8) passabel aus.<br />
Das Skript lässt sich leicht um einige Vergleiche<br />
erweitern, die gefundene Werte<br />
mit dem eingestellten Limit vergleichen<br />
und nur dann eine Mail senden, wenn<br />
der Grenzwert überschritten ist. Das<br />
kann einmal pro Tag als Zusammenfassung<br />
passieren oder im Fünf-Minuten-<br />
Takt für zügige Alarm-E-Mails.<br />
Zu Splunk gibt es einige Open-Source-<br />
Alternativen wie Logstash ([7], [8]) und<br />
Graylog [9], die jedoch in puncto Bedienfreundlichkeit<br />
und Skalierbarkeit bislang<br />
nicht an Splunk heranreichen. (jk) n<br />
Infos<br />
[1] Listings zu diesem Artikel:<br />
[ftp:// www. linux‐magazin. de/ pub/ listings/<br />
magazin/ 2013/ 09/ Perl]<br />
[2] Splunk: [http:// www. splunk. com]<br />
[3] Konstantin Agouros, „Nicht suchen, finden!“:<br />
<strong>Linux</strong>-<strong>Magazin</strong> 03/13, S. 60<br />
[4] Hadoop: [http:// hadoop. apache. org]<br />
[5] A. Schätzle, Thomas Hornung, M. Przyjaciel-Zablocki,<br />
„Große Datenmengen mit<br />
Map Reduce und Hadoop verwalten“:<br />
<strong>Linux</strong>-<strong>Magazin</strong> 04/12, S. 38<br />
[6] „Splunk: Intro REST API Tutorial“:<br />
[http:// dev. splunk. com/ view/ SP‐CAAADQT]<br />
[7] Logstash: [http:// logstash. net]<br />
[8] Martin Loschwitz, „Alle Systeme im Blick“:<br />
<strong>Linux</strong>-<strong>Magazin</strong> 05/13, S. 68<br />
[9] Graylog2: [http:// graylog2. org]<br />
Abbildung 8: HTML-Formatierung für moderne Mail-Leser, hier dargestellt in Gmail.<br />
Der Autor<br />
Michael Schilli arbeitet<br />
als Software-Engineer bei<br />
Yahoo in Sunnyvale, Kalifornien.<br />
In seiner seit 1997<br />
laufenden Kolumne forscht<br />
er jeden Monat nach praktischen<br />
Anwendungen der Skriptsprache Perl.<br />
Unter [mschilli@perlmeister. com] beantwortet<br />
er gerne Fragen.