Schlagwort-Archiv: 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

Weiterlesen

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:

Weiterlesen

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:

Weiterlesen