November 2000 - Copyright © 2000 Yves Rubin - rubiyz@yahoo.com - Silicon Graphics Inc.
NSClient has been developed to get vital information concerning Windows NT servers from Netsaint. The decision has been made to developpe a new tool as none had enough features and stability at this time.
This tool has been developed in the same spirit as Netsaint, which means that it is freeware and release under the GNU General Public License.
Windows NT 4 or Windows 2000.
Need the pdh.dll library to work
06.12.2000 - Version 1.03 - Add the memory usage feature
29.11.2000 - Version 1.02 - First release
Check CPU load on single or multiprocessors system during the last 24 hours.
Check disk space
Check memory use
Check uptime time of the machine
Check services states
Check processes
On the Windows machine
Copy pNSClient.exe in any directory on the machine you want to monitor. ie. (c:\nsclient).
Open a dos prompt in the installation directory
Run the following command : >pNSClient /install
Start the service 'Netsaint NT Agent' in the services applet of the control panel.
The installation will create an entry for the service in the registry and create a new key to store parameters. The created key is the following:
HKEY_LOCAL_MACHINE\SOFTWARE\NSClient
On the Unix machine
Copy the file 'check_nt' under the libexec folder of Netsaint
Add the following lines to the commands.cfg file:
# NSClient
command[check_nt_disk]=$USER1$/check_nt
-H $HOSTADDRESS$ -p 1248 -v USEDDISKSPACE -l $ARG1$ -w $ARG2$ -c
$ARG3$
command[check_nt_cpuload]=$USER1$/check_nt
-H $HOSTADDRESS$ -p 1248 -v CPULOAD -l $ARG1$
command[check_nt_uptime]=$USER1$/check_nt
-H $HOSTADDRESS$ -p 1248 -v UPTIME
command[check_nt_clientversion]=$USER1$/check_nt
-H $HOSTADDRESS$ -p 1248 -v CLIENTVERSION
command[check_nt_process]=$USER1$/check_nt
-H $HOSTADDRESS$ -p 1248 -v PROCSTATE -l $ARG1$
command[check_nt_service]=$USER1$/check_nt
-H $HOSTADDRESS$ -p 1248 -v SERVICESTATE -l $ARG1$
command[check_nt_memuse]=$USER1$/check_nt
-H $HOSTADDRESS$ -p 1248 -v MEMUSE -w $ARG1$ -c $ARG1$
Go to the installation directory and run the following command: >pNSClient /uninstall
All entries in the registry will be removed as well as the definition of the service..
There are two parameters you can change: the port (default: 1248) and the password (default: 'None'). These two settings are store in the registry and can only be changed using 'regedit'. Open the following key and change the values if needed :
HKEY_LOCAL_MACHINE\SOFTWARE\NSClient\Parms
CPULoad
Syntax: check_nt -H <hostname> -p <port> -v CPULOAD -l <minutes range>,<warning percent>,<critical percent>
<minutes range> between 1 and 1440 (24 hours)
<warning percent> and <critical percent> : thresholds between 1 and 100.
You can check several intervals in one shot. The follwing command get the average for the last 10min., 60min. and 24hours.
Example: ./check_nt -H 192.168.1.1 -p 1248 -V CPULOAD -l 10,80,95,60,80,95,1440,80,95
Disk usage
Syntax: check_nt -H <hostname> -p <port> -v USEDDISKSPACE -l <drive letter> [-w <warning percent> ] [-c <critical percent>]
drive letter should be only one character.
<warning percent> and <critical percent> : thresholds between 1 and 100.
Example: ./check_nt -H 192.168.1.1 -p 1248 -V USEDDISKSPACE -l C -w 80 -c 90
Uptime
Syntax: ./check_nt -H <hostname> -p <port> -v UPTIME
This plugin doesn't care about warning or critical values. Only the uptime of the machine is received.
Services states
Syntax: check_nt -H <hostname> -p <port> -v SERVICESTATE [-d SHOWALL] -l <service 1>[,<service 2>,<service 3>,...]
<service> should be the real name of the service, not the displayed name. You can find this information when going to the registry for the corresponding service : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
or use the free utility: 'Service Manager NT' : http://www-rnks.informatik.tu-cottbus.de/~fsch/english/nttols.htm
-d SHOWALL can be specified if you want to see all tested services including started ones.
You can specify serveral services in one request. No blank should appear in the list !
If not all services are running, you get the faulty one(s) and a critical state.
Example: ./check_nt -H 192.168.1.1 -p 1248 -v SERVICESTATE -d SHOWALL -l LanmanServer,Schedule
Processes
states
Syntax: check_nt -H <hostname> -p <port> -v PROCSTATE [-d SHOWALL] -l <process 1>[,<process 2>,<process 3>,...]
<processes> You can find process name in the Windows NT Task Manager.
-d SHOWALL can be specified if you want to see all tested processes including running ones.
You can specify serveral processes in one request. No blank should appear in the list !
If not all processes are running, you get the faulty one(s) and a critical state.
Example: ./check_nt -H 192.168.1.1 -p 1248 -v PROCSTATE -d SHOWALL -l McShield.exe,RASMAN.EXE
Client
version
Syntax: check_nt -H <hostname> -p <port> -v CLIENTVERSION
Return the NSClient version. No warning or critical threshold can be specified.
Memory usage
Syntax: check_nt -H <hostname> -p <port> -v MEMUSE [-w <warning percent> ] [-c <critical percent>]
<warning percent> and <critical percent> : thresholds between 1 and 100.
Example: ./check_nt -H 192.168.1.1 -p 1248 -V MEMUSE -w 80 -c 90
Windows agent
NSClient has been developed using Borland Delphi 5. It is installed as a service.
Every five seconds, NSClient query Windows to get the CPU load and store this information in a circular buffer which keeps the measures for the last 24 hours. That's the only task of the agent if no request is sent to him.
Have a look at the source code in case you want to know more about it. It's well documented so you shouldn't have too much pain to figure out how it works. Some functions and pieces of code where found on the internet, so I thank very much the programmers who release them as open source. When possible, credits are left in the code.
Unix plug in
The Unix plugin has been written in C, using a template by Ethan Galstad. It mostly uses common functions and shoud be compiled in the same directory as all other plugins. I hope that it will be included in the common distribution.