Tag Archives: Nagios

Upgrade Nagios 3.5.x zu 4.0.1

Soeben habe ich versucht Nagios von meiner aktuellen Version 3.5 auf die neuste, also Version 4.0.1 zu aktualisieren.
Bisher haben alle Aktualisierungen immer sehr gut und ohne Probleme funktioniert, doch nach diesem Update wollte Nagios nicht mehr starten:

# /etc/init.d/nagios start
Starting nagios: done.
root@lvps83-169-39-25:~# /etc/init.d/nagios restart
Running configuration check...done.
Stopping nagios: /etc/init.d/nagios: line 67: kill: (1832) - No such process
done.
Starting nagios: done.

Im Netz bin ich dann ziemlich schnell über einen interessanten Beitrag gestolpert, wonach Nagios in der Version 4.0.0 und 4.0.1 wohl Probleme mit livestatus hat. Also habe ich dies testweise deaktiviert, indem man in der Datei /usr/local/nagios/etc/nagios.cfg die folgende Zeile auskommentiert:

#broker_module=/usr/local/lib/mk-livestatus/livestatus.o /usr/local/nagios/var/rw/live

Und siehe da, nun kann der Prozess wieder gestartet werden, immerhin!

Eigene Nagios-Plugins am Beispiel CURL

Plugins zu Entwickeln für das Monitoring-System Nagios ist mit ein kleinwenig Scripting-Erfahrung kein grosses Problem mehr, wenn man weiss, wo man was ablegen soll. An folgendem Beispiel möchte ich die 3 einfachen Schritte festhalten. So stand ich letzthin vor der Aufgabe die Zeit zu messen, wie lange es braucht, um eine Seite innerhalb eines per Eingabeformular geschützten Bereiches, zu erreichen. Eigentlich gut möglich via CURL – habe ich mir gedacht! Es gibt ja Optionen wie –form oder –data, doch die scheinen auf das ASP.NET und Telerik-spezifische Formular nicht anzuspringen. Also muss der Weg über ein Cookie her mit der Option –cookie.

Doch wie sieht das Plugin nun aus?`

Von Aussen soll dem Plugin ein Cookie, eine URL und die Zeitgrenzen für eine Warnung und einen Error zum abfragen übergeben werden. Wer Scripten kann weiss natürlich das dazu die Variablen $1 – $4 genutzt werden. So kommen wir mal zu einer kleinen Überprüfung und der Übergabe an CURL:

if [ $# -lt 4 ]; then
        echo "Please use check_site COOKIE URL WARNING ERROR"
        exit 2
fi

warning=$(($3*1000))
error=$(($4*1000))

curl --cookie "ATUH=$1" "$2" -s > /tmp/store.tmp

Doch jetzt soll ja auch noch die Zeit gemessen werden. Also speichern wir vor und nach dem Abrufen der Seite jeweils einen Timestamp:

first=`echo $(($(date +%s%N)/1000000))`
warning=$(($3*1000))
error=$(($4*1000))

curl --cookie ".AUTH=$1" "$2" -s > /tmp/store.tmp

last=`echo $(($(date +%s%N)/1000000))`
need=$(($last-$first))

Und damit hat man schon fast die ganze Arbeit gemacht. Nun noch ein bisschen querchecken und die passenden Ergebnisse ausgeben:

if [ $need -gt $error  ]; then
        echo "needed `bc -l <<< "scale=3; $need/1000"` seconds for a response"
        exit 2
fi

if [ $need -gt $warning  ]; then
        echo "needed `bc -l <<< "scale=3; $need/1000"` seconds for a response"
        exit 1
fi

echo "needed `bc -l <<< "scale=3; $need/1000"` seconds for a response"
exit 0

Read more

Nagios, Nagiosgrapher und der Traffic der Netzwerkkarte

Ich weiss nicht genau wieso, aber auf die Idee, den Traffic unserer Server zu überwachen, bin ich noch gar nicht gekommen. Alles mögliche wird überwacht, von Ping bis RDP, doch ganz simple einfach der Traffic der Server habe ich bisher ausgelassen…
Das auslesen ist aber gar nicht so wild. Zurückgegriffen habe ich dabei auf check_nt und folgenden Service eingerichtet:

define service{
        use                     generic-service
        hostgroup_name          windows-servers
        service_description     RX
        check_command           check_nt!COUNTER!-l "\\Network Interface(Intel[R] PRO_1000 MT Network Connection)\\Bytes Received/sec","Received Bytes/sec %0.2f"
        }

define service{
        use                     generic-service
        hostgroup_name          windows-servers
        service_description     TX
        check_command           check_nt!COUNTER!-l "\\Network Interface(Intel[R] PRO_1000 MT Network Connection)\\Bytes Sent/sec","Sent Bytes/sec %0.2f"
        }

Dabei greife ich auf Counters in Windows zurück und erhalte die Werte für die empfangenen (RX) und versandten (TX) Pakete in Bytes pro Sekunde.

Auch für Nagiosgrapher ist das ganze alles andere als wild:

Read more

NSClient++ in NagiosGrapher integrieren

Wie versprochen, für alle welche sich jetzt auch mit NagiosGrapher herumkämpfen, stelle ich mal meine Konfiguration zur Verfügung. Ich überwache dabei folgende Punkte von NSClient++:

  • Auslastung der CPU (5 Min. Durchschnitt)
  • Auslastung vom Drive C:
  • Auslastung vom Drive D:
  • Auslastung vom RAM

Zusätzlich noch folgende Werte von eigenen Scripts:

  • Auslastung vom ESX Datastore

Damit mein Script auch bei euch funktioniert, müsst ihr natürlich die selben Check-Scripts verwenden, wie ich. Entweder habe ich dazu aber einen Standard verwendet, wie check_nt von NSClient oder ihr findet das Script irgendwo in meinem Blog. Einfach mal die Suchfunktion ein bisschen bemühen 😉

Meine Konfiguration für NagiosGrapher sieht wie folgt aus:

Read more

Nagiosgrapher in Nagios integrieren

Da ich von einem Kollegen angesprochen wurde, ob man denn auch problemlos Grafiken generieren könne aus den Daten in Nagios, bin ich aufmerksam geworden, da ich das bisher so nie versucht oder benötigt hatte. Nagios bietet ja bereits eine Handvoll Grafiken, jedoch immer nur zum Status, also entweder Weiss oder Schwarz, Up oder Down, Erreichbar oder nicht Erreichbar. Dabei würde Nagios noch so viel mehr Infos liefern. Denn neben einem (NOT-)OK erhält man zum Beispiel beim Prüfen von Storage auch noch Infos wie viel denn bereits belegt ist und das in Mega- / Gigabyte oder Prozent. Dies zieht sich weiter bei fast allen Plugins: Antwortzeiten, Prozentuelle Auslastung, verlorene ICMP Pakete, Updates, SWAP, Pagefile und vieles mehr! Also hab ich mir gedacht, da muss es doch bereits findige Köpfe gegeben haben, welche dieses Potential schon früher gesehen haben. Und so war es natürlich auch, zu meinem Glück 😀

Nagiosgrapher integriert das zum Erstellen von Graphen geeignete RRDtool direkt in Nagios und hängt die Graphen mehr oder weniger automatisiert an jeden Service. Es muss also nicht für jeden Service von jedem Host ein eigener Graph erstellt werden, sondern via RegEx können gleich alle Dienste mit dem selben Namen abgearbeitet werden. Leider wird das Projekt nicht mehr allzu stark weiterentwickelt, doch funktioniert es immer noch sauber und problemlos. Wer lieber etwas topaktuelles will, der greift auf Nagiosgraph zurück, wozu es auch bereits zig Anleitungen im Netz gibt. Selbst habe ich erst beim Schreiben dieses Artikels bemerkt, dass es einen Unterschied zwischen Nagiosgraph und NagiosGrapher gibt und auch erst da ist mir aufgefallen, wie alt NagiosGrapher eigentlich ist. Ich weiss, Schande auf mein Haupt, doch da ich bereits sehr viel Arbeit investiert hatte und alles stabil, sauber und einfach läuft, geht es auch weiter mit NagiosGrapher.
Dies Installation ist nicht wirklich schwierig, das Tool ist praktisch ein Selbstläufer. Beginnen muss man mit ein paar Vorbedingungen:

apt-get install autoconf rrdtool perl perl-base perl-modules libcalendar-simple-perl libgd-gd2-perl perlmagick librrds-perl liburi-perl

Nun kann die aktuelle Version von hier geladen werden:

Read more

« Older Entries