NSClient++ Help (#1) - NSClient++ will not start on Windows 2000 sp3 (#90) - Message List
I've have been using NSClient++ for almost a year now and mostly it's been a success. Now I've run into a real fix though.
I have installed version 0.2.7 and version 0.3.0.5 on a Windows 2000 Server with Service Pack 3 (32-bit). It installs fine but it doesn't start most of the time. I get no error messages so I have no idea what the problem could be. When starting in test-mode it just drops back to the dos promt after this:
Launching test mode... d \NSClient++.cpp(375) Loading plugin: CheckDisk... d \NSClient++.cpp(375) Loading plugin: CheckSystem... d \CheckSystem.cpp(79) Autodetected W2K>, using TOOLHELP process enumeration. d \PDHCollector.cpp(83) Autodetected w2k or later, using w2k PDH counters. d \NSClient++.cpp(375) Loading plugin: File logger... d \PDHCollector.cpp(103) Detected language: English US (0x0409) d \NSClient++.cpp(375) Loading plugin: NRPE server...
It seems to work if i disable either NRPEListener.dll or CheckSystem.dll, they won't work well together even if i disable all the other modules. One or the other works fine with all the rest though.
The server has been restarted several times so it's not a temporary error. I've tried everything I can think of. The Event Logs doesn't have anything to offer when I try to start it as a service either, just "service terminated unexpectedly".
-
Message #213
hummm... strange... could you past your NSC.ini?
NRPE and CheckSystem should not do anything that conflicts each other, the only "common" thing with those modules is they both have threads, but that in it self should not be a problem...
MickeM
anonymous02/07/08 21:17:18 (5 years ago)-
Message #214
I use the same NSC.ini for basically all 50 servers so I hope you don't find anything really wrong with it, boy will I have a few hours worth of updating otherwise ;)
;version 1.00 CUSTOM ;change log ;071102 v.0.08 Removed loading of SysTray module ;071102 v.0.09 Commented all lines under custom definitions ;080125 v.1.00 Upgrade to NSClient++ 0.3.0 [modules] ;# NSCLIENT++ MODULES ;# A list with DLLs to load at startup. ; You will need to enable some of these for NSClient++ to work. ; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ; * * ; * N O T I C E ! ! ! - Y O U H A V E T O E D I T T H I S * ; * * ; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FileLogger.dll CheckSystem.dll CheckDisk.dll NSClientListener.dll NRPEListener.dll ;SysTray.dll CheckEventLog.dll CheckHelpers.dll CheckWMI.dll ; ; RemoteConfiguration IS AN EXTREM EARLY IDEA SO DONT USE FOR PRODUCTION ENVIROMNEMTS! ;RemoteConfiguration.dll [Settings] ;# OBFUSCATED PASSWORD ; This is the same as the password option but here you can store the password in an obfuscated manner. ; *NOTICE* obfuscation is *NOT* the same as encryption, someone with access to this file can still figure out the ; password. Its just a bit harder to do it at first glance. ;obfuscated_password=Jw0KAUUdXlAAUwASDAAB ; ;# PASSWORD ; This is the password (-s) that is required to access NSClient remotely. If you leave this blank everyone will be able to access the daemon remotly. ;password=secret-password ; ;# ALLOWED HOST ADDRESSES ; This is a comma-delimited list of IP address of hosts that are allowed to talk to the all daemons. ; If leave this blank anyone can access the deamon remotly (NSClient still requires a valid password). ; The syntax is host or ip/mask so 192.168.0.0/24 will allow anyone on that subnet access allowed_hosts=192.176.2.13 ; ;# USE THIS FILE ; Use the INI file as opposed to the registry if this is 0 and the use_reg in the registry is set to 1 ; the registry will be used instead. use_file=1 [log] ;# LOG DEBUG ; Set to 1 if you want debug message printed in the log file (debug messages are always printed to stdout when run with -test) ;debug=1 ; ;# LOG FILE ; The file to print log statements to ;file=NSC.log ; ;# LOG DATE MASK ; The format to for the date/time part of the log entry written to file. ;date_mask=%Y-%m-%d %H:%M:%S [NSClient] ;# ALLOWED HOST ADDRESSES ; This is a comma-delimited list of IP address of hosts that are allowed to talk to NSClient deamon. ; If you leave this blank the global version will be used instead. ;allowed_hosts= ; ;# NSCLIENT PORT NUMBER ; This is the port the NSClientListener.dll will listen to. ;port=12489 ; ;# BIND TO ADDRESS ; Allows you to bind server to a specific local address. This has to be a dotted ip adress not a hostname. ; Leaving this blank will bind to all avalible IP adresses. ;bind_to_address= ; ;# SOCKET TIMEOUT ; Timeout when reading packets on incoming sockets. If the data has not arrived withint this time we will bail out. ;socket_timeout=30 [Check System] ;# CPU BUFFER SIZE ; Can be anything ranging from 1s (for 1 second) to 10w for 10 weeks. Notice that a larger buffer will waste memory ; so don't use a larger buffer then you need (ie. the longest check you do +1). ;CPUBufferSize=1h ; ;# CHECK RESOLUTION ; The resolution to check values (currently only CPU). ; The value is entered in 1/10:th of a second and the default is 10 (which means ones every second) ;CheckResolution=10 ; ;# CHECK ALL SERVICES ; Configure how to check services when a CheckAll is performed. ; ...=started means services in that class *has* to be running. ; ...=stopped means services in that class has to be stopped. ; ...=ignored means services in this class will be ignored. ;check_all_services[SERVICE_BOOT_START]=ignored ;check_all_services[SERVICE_SYSTEM_START]=ignored ;check_all_services[SERVICE_AUTO_START]=started ;check_all_services[SERVICE_DEMAND_START]=ignored ;check_all_services[SERVICE_DISABLED]=stopped [NRPE] ;# NRPE PORT NUMBER ; This is the port the NRPEListener.dll will listen to. port=5666 ; ;# COMMAND TIMEOUT ; This specifies the maximum number of seconds that the NRPE daemon will allow plug-ins to finish executing before killing them off. ;command_timeout=60 ; ;# COMMAND ARGUMENT PROCESSING ; This option determines whether or not the NRPE daemon will allow clients to specify arguments to commands that are executed. ;allow_arguments=0 ; ;# COMMAND ALLOW NASTY META CHARS ; This option determines whether or not the NRPE daemon will allow clients to specify nasty (as in |`&><'"\[]{}) characters in arguments. ;allow_nasty_meta_chars=0 ; ;# USE SSL SOCKET ; This option controls if SSL should be used on the socket. ;use_ssl=1 ; ;# BIND TO ADDRESS ; Allows you to bind server to a specific local address. This has to be a dotted ip adress not a hostname. ; Leaving this blank will bind to all avalible IP adresses. ; bind_to_address= ; ;# ALLOWED HOST ADDRESSES ; This is a comma-delimited list of IP address of hosts that are allowed to talk to NRPE deamon. ; If you leave this blank the global version will be used instead. ;allowed_hosts= ; ;# SCRIPT DIRECTORY ; All files in this directory will become check commands. ; *WARNING* This is undoubtedly dangerous so use with care! ;script_dir=scripts\ ; ;# SOCKET TIMEOUT ; Timeout when reading packets on incoming sockets. If the data has not arrived withint this time we will bail out. ;socket_timeout=30 [NRPE Handlers] ;# COMMAND DEFINITIONS - DEFAULT command[check_services]=inject CheckServiceState CheckAll exclude=SysmonLog command[check_disk]=inject CheckDriveSize CheckAll MinWarnFree=20% MinCritFree=10% command[check_cpu]=inject CheckCPU warn=93% crit=98% command[check_uptime]=inject CheckUpTime ShowAll command[check_version]=M:\usr\NSClient++\scripts\clientversion.bat command[check_ini_version]=M:\usr\NSClient++\scripts\iniversion.bat ; page = actual usage of page file command[check_mem_page]=inject CheckMem ShowAll MaxWarn=80% MaxCrit=90% type=page ; paged = actual usage of page file (from performance counters) command[check_mem_paged]=inject CheckMem ShowAll MaxWarn=80% MaxCrit=90% type=paged ; virtual = actual usage of virtual memory command[check_mem_virtual]=inject CheckMem ShowAll MaxWarn=80% MaxCrit=90% type=virtual ; physical = actual usage of RAM command[check_mem_physical]=inject CheckMem ShowAll MaxWarn=80% MaxCrit=90% type=physical ;# COMMAND DEFINITIONS - CUSTOM ;command[check_services]=inject CheckServiceState CheckAll ;command[check_disk]=inject CheckDriveSize CheckAll MaxWarnUsed=80% MaxCritUsed=90% ;command[check_disk]=inject CheckDriveSize CheckAll ShowAll MaxWarnUsed=80% MaxCritUsed=90% ;command[check_process]=inject CheckProcState ShowAll Explorer.exe=started spoolsv.exe=started ;command[check_process]=inject CheckProcState Explorer.exe=started spoolsv.exe=started ;command[check_threads]=inject checkCounter "Counter=\\localhost\Process(svchost)\Thread Count" MaxWarn=600 MaxCrit=650 ;command[check_mssql_backup]=cscript //NoLogo C:\usr\NSClient++\scripts\check_mssql_backup.vbsDOB02/07/08 21:26:20 (5 years ago)
-
-
Message #215
might wanna try the new (out in a minute or so) nightly, I have wrapped all modules inside default exception handlers which might perhaps give you an error, the "next" thing to "fix" would be to add a check for all memory allocations, but that is quite tedious, and in a program that uses this little memory it should not be a problem really...
But try the latest nightly with nsclient++ /test and let me know if you get anything more from it.
MickeM
anonymous02/07/08 21:30:26 (5 years ago)-
Message #216
No difference I'm afraid. I tried it with the NSC.ini that comes with the new installation just in case, just uncommented the dll-files, still no go. Another thing is that I've never been able to uninstall the service without restarting the server (3 of 3, all different versions) and that only applies to this server, normally it uninstalls just fine.
I leaning towards this being a problem with this server. It has shown other signs of not being 100% healthy. I will put in a request to patch it with SP4 and see if that does the trick.
It would however still be nice to be able to get some kind of error from NSClient. The worst error you can get is no error at all...
DOB02/07/08 22:09:54 (5 years ago)-
Message #217
Yes, you are indeed correct: "crashing" is not a proper way to behave. Unfortunately the only thing I can think of (besides hardware problems) is that a malloc fails (which I do not check) but adding that would be quite extensive.
There is also a "feature" as the logging is not done *when* the problem happends it is done after the log message had been "relayed" to the logging module (this as you need to synchronize output in a multi tasked application) so some messages might be lost if the client "crashes to fast" after an error. So I could if you want too play around make a build that logs to STD-out this will be hard to read but might give you more messages?
Let me know if you want to try this (email me at michael<at>medin<dot>name and I will send you a build). (there is also a new build you can try with more more default-catches)
MickeM
mickem02/08/08 07:23:03 (5 years ago)
-
-








