Mit Hilfe des NSClient++ kann der Windows interne Performance Counter, der Informationen die das lokale System betreffen sammelt und zur Erstellung von Statistiken herangezogen werden kann, abgefragt werden.
Hier werden Informationen zur CLIENTVERSION, CPULOAD, UPTIME, MEMUSE, USEDDISKSPACE, SERVICESTATE, PROCSTATE und allen COUNTER des Systems gesammelt und können mit check_nt abgefragt werden.
Zusätzlich gibt es die Möglichkeit mit check_nrpe selbst geschriebene oder angepasste Scripten durch nagios ausführen zu lassen und auszuwerten.
Zu finden auf dem System unter:
–> Start –> Programs –> Administrativ Tools –> Performance bzw. –> Start –> Systemsteuerung –> Verwaltung –> Leistung
Um diese Daten für Nagios zugänglich zu machen muss eine spezielle Software auf dem Windows Rechner installiert werden. Herunterladen des NSClient++ von: NSClient++ Trac (einfach dem Downloadbutton folgen)
Diese Software beherrscht sowohl nsclient (check_nt) wie auch NRPE (check_nrpe)!
ES MUSS KEIN NRPE ZUSÄTZLICH INSTALLIERT WERDEN , SONDERN NUR IN DER KONFIG DATEI AKTIVIERT WERDEN, SOLLTET IHR ES DAMIT VERSUCHEN!
Einfach sämtliche Programmteile in ein Verzeichnis nach Wahl auf die Windows Maschine kopieren, z.B. c:\nsclient. Bevor NSClient++ installiert und gestartet werden kann, muss er konfiguriert werden. Es handelt sich dabei um eine einfache Textdatei, die geändert werden muss und das funktioniert mit jedem beliebigen Editor. Wichtig allerdings, es muss konfiguriert werden!!!
Hierzu öffnen wir die Datei NSC.ini. Es werden nun folgende Einträge geändert, wobei der (;) Strichpunkt die Befehle auskommentiert!!!
Jetzt muss eine DOS-Shell geöffnet und nach c:\nsclient gewechselt werden, man geht also bis zum Installationsordner des Programms wo sich die Datei NSClient++.exe befindet.
Um NSClient++ zu installieren, muss dieser Befehl abgesetzt werden, der NSClient läuft danach als Windows Dienst und wird nach einem reboot wieder mitgestartet:
NSClient++ /install
Um einen Uninstall durchzuführen:
NSClient++ /uninstall
Um NSClient++ zu starten: (auch möglich: net start nsclientpp)
NSClient++ /start
Um NSClient++ zu stoppen: (auch möglich: net stop nsclientpp)
NSClient++ /stop
Um zu testen, ob er richtig läuft, sollte der Client noch nicht mit /install gestartet sein, da ansonsten der Port belegt ist:
NSClient++ /test
Ist die Installation erfolgt, findet sich ein neuer Service unter –> Manage –> Services –> NSClient (Nagios)… bzw. Start –> Systemsteuerung –> Verwaltung –> Dienste –> NSClient
Genauere Informationen findet ihr in der Konfig Datei!!!
Zur Abfrage des NSClient++ wird vom Nagios Rechner das Plugin check_nt oder check_nrpe verwendet. Diese gehören inzwischen zu den Standards und sollten unter /usr/local/nagios/libexec zu finden sein. Achtung: check_nrpe funktioniert nur in der Version 2.x mit dem NSClient++!
cd /usr/local/nagios/libexec ./check_nt –h ./check_nrpe -h
Bis auf das Auslesen der Counter sollte eigentlich alles selbsterklärend sein. Was halt wichtig ist, dass auf dem Remote-Rechner auch die Module freigeschaltet sind, die abgefragt werden. Zur Abfrage der Counter hier ein kleines Beispiel, wie es aussehen könnte. Wie oben in der Grafik ersichtlich, versuchen wir vom „ISA Server Web Proxy service“ den „Total Upstream Bytes/sec“ abzufragen, was ja lt. Performance Counter möglich zu sein scheint.
Counter werden wie folgt in eine Abfrage eingebunden, wobei in diesem Beispiel keine Schwellwerte wie –w Warning und –c Critical angegeben wurden:
Befehl:
SYNTAX: ./check_nt -H <host_address> -p 12489 -v COUNTER -l "\\Leistungsobjekt(Instanz)\\Indikator"
Beispiel: ./check_nt -H <host_address> -p 12489 -v COUNTER -l "\\ISA Server Web Proxy service\\Upstream Bytes Total/sec"
Ausgabe:
384167
Ergebnis, 384167 Bytes werden pro Sekunde im Upstream gesendet
ACHTUNG: falls jeweils nur die erste Stelle des Ergebnisses ausgegeben wird, sind die Language-Einstellungen auf dem Nagios-Rechner zu prüfen. Möglicherweise muss auf deutsche Spracheinstellung verzichtet werden, ggf. reicht es aus, die Umgebungsvariabl LC_ALL zu löschen.
Die Ausgabe selbst ist so nicht wirklich brauchbar, es kann daher eine Beschreibung / Description hinzugefügt werden, die dann als eine Art Beschriftung des Ganzen dient, leider ist dies nur ein printf Befehl, der nicht rechnen kann, es ist also nicht möglich, sich die Bytes in MBytes umrechnen zu lassen!
Befehl:
./check_nt -H xxxxxxxxxxxxxx -p 12489 -v COUNTER -l "\\ISA Server Web Proxy service\\Upstream Bytes Total/sec","Total Upstream Bytes per second %.f"
Ausgabe jetzt mit Performance-Daten und Beschriftung
Total Upstream Bytes per second 301008 | 'Total Upstream Bytes per second %.f'=301008.000000%;0.000000;0.000000;
Weiteres Beispiel anhand einer Abfrage eines HP EVA 5000 Storage:
./check_nt -H <host_address> -p 12489 -v COUNTER -l "\\HP EVA Storage Array(5000-1FE1-5003-D1A0)\\Total host KB/s","Total Host","kb/s"
Ausgabe:
Total Host = 32221 kb/s | 'Total Host'=32221.000000kb/s;0.000000;0.000000;
Falls in der NSC.ini ein Passwort definiert wurde, kann dieses über die Option -s angegeben werden. Teilweise muss bei einem leeren Passwort -s ““ angegeben werden, damit Ergebnisse zurückgeliefert werden.
Plugin zur Überprüfung der NSClient-Version auf remote System
Befehl:
./check_nt -H xxxxxxxxxxxxxxxx -p 12489 -v CLIENTVERSION
Ausgabe:
NSClient++ 0.2.0 2005-05-21
Befehl: (Hier muss bitte beachtet werden, dass sich die Angaben bei -l immer in 3er Gruppen zusammen setzen. 1. Stelle = Load für n Minuten, 2. Stelle = %-Schwellwert für Warning, 3. Stelle = %-Schwellwert für Critical, 4. Stelle = wie 1. wieder Load für n Minuten, usw. …) Wichtig ist, wenn man den CPULOAD über einen längeren Zeitraum als 60 Minuten beobachten möchte, dann muss in der Konfig folgendes geändert werden: CPUBufferSize=1h (dieser behält die Informationen der CPU per default für 1 Stunde und müsste dann eben verlängert werden!).
./check_nt -H xxxxxxxxxxxxxxxx -p 12489 -v CPULOAD -l 10,90,95,30,90,95
Ausgabe:
CPU Load 15% (10 min average) 17% (30 min average) | '10 min avg Load'=15%;90;95;0;100 '30 min avg Load'=17%;90;95;0;100
Plugin um festzustellen, wie lange ein System läuft
Befehl:
./check_nt -H xxxxxxxxxxxxxxxx -p 12489 -v UPTIME
Ausgabe:
System Uptime - 19 day(s) 3 hour(s) 5 minute(s)
Messung des gesamten, freien und verwendeten Arbeitsspeichers
Befehl: (Warning -w und Critical -c Schwellwerte können definiert werden, müssen aber nicht!)
./check_nt -H xxxxxxxxxxxxxxxx -p 12489 -w 70% -c 80% -v MEMUSE
Ausgabe:
Memory usage: total:6403.63 Mb - used: 2511.95 Mb (39%) - free: 3891.68 Mb (61%) | 'Memory usage'=2511.95Mb;4482.54;5122.91;0.00;6403.63
Messung des gesamten, freien und gebrauchten Festplattenspeichers eines bestimmen Mediums
Befehl: (Festplatten werden mit dem Parameter -l definiert. Bei Windows normalerweise c,d,e,f,g …)
./check_nt -H xxxxxxxxxxxxxxxx -p 12489 -w 70% -c 80% -v USEDDISKSPACE -l c
Ausgabe:
c:\ - total: 9.76 Gb - used: 5.05 Gb (52%) - free 4.71 Gb (48%) | 'c:\ Used Space'=5.05Gb;6.83;7.81;0.00;9.76
Hier können einzelne Services angegeben werden, die auf ihren Status abgefragt werden (Ok, Stopped, Unknown,…). Was zu beachten ist, dass mehrere Services mit einem Komma getrennt angegeben werden können (-l nsclient,cpqteam), allerdings wird dann, sollte es einen Service geben, der sich in einem „nicht ok“ Status befindet, nur dessen Status zurückgegeben! Das sieht dann beispielsweise wie folgt aus (cpqteam: Stopped).
Befehl:
./check_nt -H xxxxxxxxxxxxxxxx -p 12489 -v SERVICESTATE -l nsclient (-l nsclient,cpqteam)
Ausgabe:
OK: All services are running. (cpqteam: Stopped)
Dienstenamen, die Leerzeichen enthalten, müssen in Anführungszeichen gesetzt werden.
Es handelt sich hierbei um den gleichen Sytnax wie SERVICESTATE, allerdings werden hier die Service nur gecheckt ob sie im Status „running“ oder „stop“ sind, es werden keine anderen Statis überprüft.
Befehl:
./check_nt -H xxxxxxxxxxxxxxxx -p 12489 -v PROCSTATE -l nsclient
Ausgabe:
OK: All services are running.
Wie einzelne Windows Counter abgefragt werden, findet ihr weiter oben unter dem Punkt „Das Check Plugin auf Nagios“!
— gore-tex 23.10.2006 16:42
Soll ein Service geprüft werden, in dem ein Dollarzeichen vorkommt, (MSSQL$DATEV_SV_SE01) so muss man den Servicenamen mit zusätzlichem $ anpassen und mit einfachen Hochkomma (') einschliessen
siehe: /usr/local/nagios/libexec/check_nt -H $HOSTADDRESS$ -p 12489 -v SERVICESTATE -l 'MSSQL$$DATEV_SV_SE01'
Um check_nt in in Nagios einzubinden müssen im wesentlichen 2 Dateien verändert werden.
Das Beispiel bezieht sich auf das Abfragen einer Windows-Client Partition In der commands.cfg muss check_nt für den jeweiligen Dienst angepasst werden.
commands.cfg
Befehl:
# 'check_nt_disk' command definition
define command{
command_name check_nt_disk
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v USEDDISKSPACE -l $ARG1$ -w $ARG2$ -c $ARG3$ -s <Passwort>
}
-p gibt den Port an auf dem der Dienst auf dem Client horcht. -l ist für die Partition die geprüft werden soll. -w steht für warning und -c critical. Darüber werden die Schwellenwerte für die Warnmeldungen übergeben. -s gibt das Passwort an mit welchem der Zugriff auf NSClient++ geschützt werden kann. Bei USEDDISKSPACE wird die prozentuale Belegung der Platte geprüft.
services.cfg
Befehl:
define service{
host_name examplehost
service_description DISK-C
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups Nagios_Admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_nt_disk!c!70!80
}
Es wird das zuvor definierte Kommando check_nt_disk ausgeführt.
Es prüft die Partition C: ,warnt bei 70% Belegung und gibt bei 80% eine kritische Warnmeldung aus.
— hellermartin 2007/01/19 12:14
Bei der Abfrage von deutschsprachigen Windowsservern kann es zu Problemen mit deutschen Umlauten kommen.
Ein Workaround wurde im Forum erörtert und als Funktionstüchtig anerkannt:
In der Registry folgenden Pfad suchen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
Dort gibt es: 007 für deutsch und 009 für englisch. Man editiere nun den „Counter“ Schlüssel und ändere die Umlaute wie z.B. „ö“ in „oe“ oder kopiert gleich die englischen Werte.
Achtung
Änderungen in der Windows Registrierung können schwerwiegende Folgen für das System haben.