Die Aufgabe war, die angemeldeten Benutzer an einem Terminalserver langfristigen auswertbar zu machen. Da wir einen Nagios einsetzen und die gewünschten Werte sich über den Perfmon (einem Windows Tool zum anzeigen der internen Performance Counter) abfragen lassen, lag es nah beides miteinander zu verbinden. Das Plugin check_counter liest die Performance Counter und kann eine entsprechende Ausgabe zurück geben. In diese lässt sich nur schwer das Perf Data Format integrieren. So das wir dies mit einem kleinen Vbs-Skript erledigen (alle Anführungszeichen sind doppelte!).
Set objShell=Wscript.CreateObject("Wscript.shell")
Set objExecObject=objShell.exec("%comspec% /c wincheck_counter
-C ""Terminaldienste""
-P ""Aktive Sitzungen"" -c 25 -w 10 -f ""%f""")
Do Until objExecObject.stdOut.AtEndOfStream
counter=objExecobject.stdOut.ReadLine()
Loop
Wscript.Echo counter & " aktive Sitzungen |
ActiveSessions=" & counter & ";;;;"
WScript.Quit(0)
Die zweite Set-Zeile und die vorletzte Echo-Zeile müssen komplett in einer Zeile stehen. Des weiteren muss der Pfad zum wincheck_counter angepasst werden. Der Return-Code ist immer 0 (ok), da es sich um eine Datenerfassung handelt. Das Skript muss dann noch als Kommando für den NSRP konfiguriert werden und im Nagios die Erfassung der Perf Data per PNP aktiviert werden.