26.02.2014 Aufrufe

Linux-Magazin Clean Linux (Vorschau)

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!