Translations of this page:

NSClient++, check_nt und check_nrpe

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.

performancecounter.jpg

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!

Installation NSClient++:

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!!!

  • Benötigte Module müssen frei geschaltet werden!
    • FileLogger.dll
    • CheckSystem.dll
    • CheckDisk.dll
    • NSClientListener.dll
    • NRPEListener.dll
    • SysTray.dll
    • CheckEventLog.dll
    • CheckHelpers.dll
  • obfuscated_password=
    • ist keine richtige Verschlüsselung, allerdings eine Erschwerung, sollte man das Passwort knacken wollen! Kann angegeben werden oder nicht, muss allerdings freigestellt sein!!!
  • password=
    • Kann angegeben werden, muss aber nicht, auch das muss freigestellt sein!!!
  • allowed_hosts=127.0.0.1,xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx
    • Hier die Host eintragen, die auf den NSClient++ zugreifen dürfen; Komma getrennte Liste!
  • port=12489
    • Der Port kann frei gewählt werden, beim Checkplugin ist der default Port 1248.

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!!!

Das Check Plugin auf Nagios

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

Abfragen mit check_nt

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.

Beispielabfragen

CLIENTVERSION

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 
CPULOAD

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 
UPTIME

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) 
MEMUSE

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
USEDDISKSPACE

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
SERVICESTATE

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.

PROCSTATE

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.
COUNTER

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

Abfragen mit check_nt_service mit $

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'

Einbinden in Nagios

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

Umlaute bei check_nt

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.

nagios/plugins/check_nt.txt · Zuletzt geändert: 2012/06/14 10:05 (Externe Bearbeitung)
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0