Open Source im professionellen Einsatz
Newsletter abonnieren
HEFTARCHIV | NEWS | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO

Partner-Links:
Shopping
Yatego Deutschlands größte Shoppingmall. 7000 Shops,
2.5 Mio Artikel. Alle Bestseller, Gutscheine und Liveshopping.

Firewall bei Mercateo kaufen.

Ein Preisvergleich bei Hardware lohnt sich.

Bei inkpool.de Laserdrucker und mehr bestellen.

Sie suchen günstige Laptops? Schauen Sie doch mal bei Preisvergleich.org, Preisvergleich.eu, Preisvergleich.ch und Preisvergleich.at vorbei.

Linux Jobs

Job offers Netherlands


user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2006  »  05  »  Holzauge, sei wachsam  

RSS-Feed der aktuellen News von Linux-Magazin Online

© photocase.com

Diesen Artikel drucken Diesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren

Nagios-Plugins im Eigenbau

Holzauge, sei wachsam

von Michael Schilli
Erschienen im Linux-Magazin 2006/05

Mit Hilfe selbst geschriebener Plugins spannt der clevere Perl-Programmierer das Netzwerk-Monitoring-Tool Nagios für vielfältige Überwachungsaufgaben ein.

Was tun, wenn die technisch eher desinteressierte Lebenspartnerin aus dem Nebenzimmer ruft: "Mein Internet geht nicht!" Mühsam zu erforschen, ob der Router ordnungsgemäß mit dem Serviceprovider kommuniziert und der DNS-Server erreichbar ist, wäre eine Möglichkeit. Viel einfacher gestaltet sich die Fehlersuche allerdings, wenn eine Software die wichtigsten Funktionen stets im Blick behält und das Ergebnis auf einer Webseite wie beispielsweise in Abbildung 1 präsentiert.


Abbildung 1: Die Nagios-Übersichtsseite zeigt an, dass lokale Tests fehlerlos durchlaufen, aber der Router und alle hinter ihm liegenden Systeme nicht ansprechbar sind.

Für solche Monitoring-Aufgaben bietet sich das Open-Source-Tool Nagios an. Die Entwickler stellen auf [5] viele Plugins bereit, die Websites, Datenbanken, Netzwerke und vieles mehr überwachen. Für spezielle Bedürfnisse schneidert sich der Admin einfach eigene Plugins nach Maß.

Nagios kann zum Beispiel laufend prüfen, ob ein Hostingprovider dem Kunden einen performanten Server mit genügend Spielraum zur Verfügung stellt, statt die vermieteten Rechner mit zu vielen Websites zu überfordern. Hat die Nagios-Installation auf dem lokalen Rechner aus Sicherheitsgründen keinen direkten Shellzugang zum fraglichen Host beim Provider, installiert der Kunde dort einfach einen Agenten.

IO-Statistik

Dafür eignet sich das Skript »iostat.cgi« (Listing 1), abgelegt im CGI-Verzeichnis des zu untersuchenden Webservers. Auf einen HTTP-Request hin ruft es das Kommando »iostat« auf und sendet dessen Ergebnisse zurück an das anfordernde Nagios-Plugin. Dies interpretiert das Ergebnis und teilt der Nagios-Applikation über den Exit-Code mit, ob alle Werte im grünen Bereich liegen oder ein Problem aufgetreten ist (Tabelle 1).

Listing 1:
»iostat.cgi«

01 #!/usr/bin/perl -w
02 use strict;
03 use Sysadm::Install qw(:all);
04 use CGI qw(:all);
05 use Regexp::Common;
06 
07 my($stdout, $stderr, $rc) =
08   tap "iostat", 1, 2;
09 
10 $stdout =~ /avg-cpu.*?avg-cpu/gs;
11 
12 print header();
13 
14 for my $key (qw(user nice sys
15                 iowait idle)) {
16   if($stdout =~
17      /G.*?($RE{num}{real})/gs) {
18        printf "%s %s ", $key, $1;
19   }
20 }

Tabelle 1:
Exit-Werte

 

Exit-Wert

Text

Bedeutung

0

OK

Alles im grünen Bereich

1

WARNING

Serviceproblem

2

CRITICAL

Kritisches Serviceproblem

3

UNKNOWN

Problem mit dem Plugin

Das CGI-Skript »iostat.cgi« ruft über die Funktion »tap« des CPAN-Moduls Sysadm::Install das Kommando »iostat« mit den Werten 1 und 2 auf (Zeile 8). Wegen des Intervall-Wertes »1« und des Count-Wertes »2« führt es zwei Messungen von CPU-Performance sowie Festplatten-IO durch und erzeugt eine Ausgabe gemäß Abbildung 3.

Die erste Messung gibt Mittelwerte seit dem letzten Reboot zurück, während die zweite die für Nagios interessanteren aktuellen Werte zeigt, die Iostat über eine Sekunde mittelt. Die Spalte »%idle« gibt an, wie lange die CPU frei zur Verfügung stand, und »%iowait« misst, wie lange die CPU auf die Festplatte warten musste. Aus der Sicht des Kunden ist also ein hoher Wert für »%idle« ebenso günstig wie ein möglichst geringer Wert für »%iowait«.

Das Skript (Listing 1) liest die Ausgabe von »iostat«, wirft die erste Messung weg, parst mit dem regulären Ausdruck »{num}{real}« aus dem Regexp::Common-Fundus die Zahlenwerte und gibt (nach dem obligatorischen HTTP-Header) den Text »user 2.99 nice 0.00 sys 0.00 iowait 0.00 idle 96.52« zurück. Die so genannte Zero-Width-Assertion»G« (Zeile 17) sorgt dafür, dass die Regex-Engine nicht jedes Mal zum Textanfang zurückspringt, sondern den Suchvorgang direkt hinter dem letzten Treffer fortsetzt.

Grenzlasten

Auf der Nagios-Seite ruft das Plugin in Listing 2 mit LWP::Simple das gerade vorgestellte CGI-Skript auf dem Server auf, schnappt sich die Ausgabezeile und zerlegt sie mit »split« in Felder, die es im Hash »%values« ablegt. Ist die CPU zu weniger als 50 Prozent verfügbar, meldet das Plugin den Zustand Critical, sind es weniger als 70 Prozent, spricht es nur eine Warnung aus. Gleiches gilt für die gemessenen Iowait-Werte, bei denen die jeweiligen Grenzwerte bei 10 und 20 Prozent liegen.

Listing 2:
»check_iostat«

01 #!/usr/bin/perl
02 ###########################################
03 use strict;
04 use LWP::Simple;
05 use Log::Log4perl qw(:easy);
06 use Nagios::Clientstatus;
07 
08 my $version = "0.01";
09 my $ncli    = Nagios::Clientstatus->new(
10     help_subref    =>
11       sub { print "usage: $0 urln" },
12     version        => $version,
13     mandatory_args => [ "url" ],
14 );
15 
16 my $url = $ncli->get_given_arg("url");
17 
18 my $data = get $url;
19 
20 unless($data) {
21     print "Failed to get $urln";
22     exit $ncli->exitvalue("unknown");
23 }
24 
25 my %values = split ' ', $data;
26 
27 my $status =
28   $values{idle}   < 50 ? "critical" :
29   $values{idle}   < 70 ? "warning"  :
30   $values{iowait} > 20 ? "critical" :
31   $values{iowait} > 10 ? "warning"  :
32                          "ok";
33 
34 print "IOSTAT ", uc($status), " - $datan";
35 
36 exit $ncli->exitvalue($status);

Das Modul Nagios::Clientstatus vom CPAN erleichtert die Arbeit etwas, da es prüft, ob das Plugin alle erforderlichen Parameter erhalten hat. Außerdem versteht die Methode »exitvalue()« auch Strings wie »warning« statt des Zahlenwerts »1« aus der Nagios-Welt. Von der Kommandozeile aus mit »check_iostat -url=http://webserver.com/cgi/iostat.cgi« aufgerufen zeigt das Plugin nun folgende Ausgabe:

IOSTAT OK - user 2.99 nice 0.00 sys 0.00 iowait 0.00 idle 96.52

Nagios wird später das Plugin genauso aufrufen und sowohl den Exit-Wert interpretieren als auch den auf Stdout angegebenen Text anzeigen. Zu beachten ist allerdings, dass Nagios::Clientstatus mindestens Version 2.35 von Getopt::Long benötigt.


Abbildung 2: Mit dieser Darstellung dokumentiert Nagios, wie oft ein System nicht erreichbar war.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Diese Seite zu Mister Wong hinzuf�gen Webnews yigg it! Slashdot it! Twittern!
Ähnliche Artikel
Große Schwester Kurz vorgestellt: Network Monitoring mit Big Sister
Müllvermeidung Spam abwehren, bevor er den Filter erreicht
Heilig nach Punkten Messenger-Plugin verschafft Vorteil durch Webseiten-Überwachung
Top Ten Redaktions-Ranking der Top-Werkzeuge
Das Log als Ohrwurm Perl-Skript realisiert das singende, klingende Internet
Selbst ist der Admin Monitoring: Server- und Netzüberlastungen mit Bordmitteln ermitteln
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Kommentare (0)
 

Impressum |Datenschutzerklärung | © 2010Linux New Media AG
Partner-Sites
Deutschland: [Admin-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Linux Technical Review] [Ubuntu User]
Europa: [EasyLinux Polen] [Linux Magazine Polen] [Linux Magazine Spanien]
International: [Linux Magazine International] [Linux Pro Magazine] [Ubuntu User] [Linux Magazine Brasilien] [EasyLinux Brasilien]