Windows System Updates check issues

This support forum board is for support questions relating to Nagios XI, our flagship commercial network monitoring solution.
tkurek
Posts: 8
Joined: Sat Sep 01, 2012 4:20 am

Windows System Updates check issues

Post by tkurek »

Hi

I'm experiencing some issues when setting up Windows Updates check as described here: http://library.nagios.com/library/produ ... -nagios-xi.

I installed the newest version of NSClient++ (0.4.0.183) and set up everything according to included PDF. I am able to execute the check_windows_updates.ps1 script locally, on the monitored host, but when trying to execute it via NRPE from my Nagios XI instance I'm getting the following output only:

Code: Select all

[root@it-monitoring01 ~]# /usr/local/nagios/libexec/check_nrpe -H jcnj397.antennasoftware.com -t 300 -c check_updates
[root@it-monitoring01 ~]# echo $?
141
[root@it-monitoring01 ~]#
My nsclient.ini file looks like below:

Code: Select all

# If you want to fill this file with all avalible options run the following command:
# nscp settings --generate ini --add-defaults --load-all


; Undocumented section
[/modules]

; CheckDisk - CheckDisk can check various file and disk related things. The current version has commands to check Size of hard drives and directories.
CheckDisk = 1

; Event log Checker. - Check for errors and warnings in the event log. This is only supported through NRPE so if you plan to use only NSClient this wont help you at all.
CheckEventLog = 1

; Check External Scripts - A simple wrapper to run external scripts and batch files.
CheckExternalScripts = 1

; Helper function - Various helper function to extend other checks. This is also only supported through NRPE.
CheckHelpers = 1

; Check NSCP - Checkes the state of the agent
CheckNSCP = 1

; CheckSystem - Various system related checks, such as CPU load, process state, service state memory usage and PDH counters.
CheckSystem = 1

; CheckWMI - CheckWMI can check various file and disk related things. The current version has commands to check Size of hard drives and directories.
CheckWMI = 1

; NRPE server - A simple server that listens for incoming NRPE connection and handles them. NRPE is preferred over NSClient as it is more flexible. You can of cource use both NSClient and NRPE.
NRPEServer = 1

; NSCAClient - Passive check support (needs NSCA on nagios server). Avalible crypto are: {0=No Encryption (not safe), 1=XOR, 2=DES, 3=DES-EDE3, 4=CAST-128, 6=XTEA, 8=Blowfish, 9=Twofish, 11=RC2, 14=AES, 15=AES, 16=AES, 20=Serpent, 23=GOST}
NSCAClient = 1

; NSClient server - A simple server that listens for incoming NSClient (check_nt) connection and handles them. Although NRPE is the preferred method NSClient is fully supported and can be used for simplicity or for compatibility.
NSClientServer = 1


; Undocumented section
[/settings/default]

; ALLOWED HOSTS - A comaseparated list of allowed hosts. You can use netmasks (/ syntax) or * to create ranges.
allowed hosts = 127.0.0.1,192.168.64.49


; A list of aliases available. An alias is an internal command that has been "wrapped" (to add arguments). Be careful so you don't create loops (ie check_loop=check_a, check_a=check_loop)
[/settings/external scripts/alias]

check_disk1 = CheckDriveSize MinWarn=20% MinCrit=10% CheckAll FilterType=FIXED Drive=C
check_disk2 = CheckDriveSize MinWarn=20% MinCrit=10% CheckAll FilterType=FIXED Drive=D
check_disk2 = CheckDriveSize MinWarn=20% MinCrit=10% CheckAll FilterType=FIXED Drive=L
check_load = checkCPU warn=80 crit=90 time=1m time=5m time=15m
check_ram = checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical
check_swap = checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=virtual

; alias_cpu - Alias for alias_cpu. To configure this item add a section called: /settings/external scripts/alias/alias_cpu
alias_cpu = checkCPU warn=80 crit=90 time=5m time=1m time=30s

; alias_cpu_ex - Alias for alias_cpu_ex. To configure this item add a section called: /settings/external scripts/alias/alias_cpu_ex
alias_cpu_ex = checkCPU warn=$ARG1$ crit=$ARG2$ time=5m time=1m time=30s

; alias_disk - Alias for alias_disk. To configure this item add a section called: /settings/external scripts/alias/alias_disk
alias_disk = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll FilterType=FIXED

; alias_disk_loose - Alias for alias_disk_loose. To configure this item add a section called: /settings/external scripts/alias/alias_disk_loose
alias_disk_loose = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll FilterType=FIXED ignore-unreadable

; alias_event_log - Alias for alias_event_log. To configure this item add a section called: /settings/external scripts/alias/alias_event_log
alias_event_log = CheckEventLog file=application file=system MaxWarn=1 MaxCrit=1 "filter=generated gt -2d AND severity NOT IN ('success', 'informational') AND source != 'SideBySide'" truncate=800 unique descriptions "syntax=%severity%: %source%: %message% (%count%)"

; alias_file_age - Alias for alias_file_age. To configure this item add a section called: /settings/external scripts/alias/alias_file_age
alias_file_age = checkFile2 filter=out "file=$ARG1$" filter-written=>1d MaxWarn=1 MaxCrit=1 "syntax=%filename% %write%"

; alias_file_size - Alias for alias_file_size. To configure this item add a section called: /settings/external scripts/alias/alias_file_size
alias_file_size = CheckFiles "filter=size > $ARG2$" "path=$ARG1$" MaxWarn=1 MaxCrit=1 "syntax=%filename% %size%" max-dir-depth=10

; alias_mem - Alias for alias_mem. To configure this item add a section called: /settings/external scripts/alias/alias_mem
alias_mem = checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical type=virtual type=paged type=page

; alias_process - Alias for alias_process. To configure this item add a section called: /settings/external scripts/alias/alias_process
alias_process = checkProcState "$ARG1$=started"

; alias_process_count - Alias for alias_process_count. To configure this item add a section called: /settings/external scripts/alias/alias_process_count
alias_process_count = checkProcState MaxWarnCount=$ARG2$ MaxCritCount=$ARG3$ "$ARG1$=started"

; alias_process_hung - Alias for alias_process_hung. To configure this item add a section called: /settings/external scripts/alias/alias_process_hung
alias_process_hung = checkProcState MaxWarnCount=1 MaxCritCount=1 "$ARG1$=hung"

; alias_process_stopped - Alias for alias_process_stopped. To configure this item add a section called: /settings/external scripts/alias/alias_process_stopped
alias_process_stopped = checkProcState "$ARG1$=stopped"

; alias_sched_all - Alias for alias_sched_all. To configure this item add a section called: /settings/external scripts/alias/alias_sched_all
alias_sched_all = CheckTaskSched "filter=exit_code ne 0" "syntax=%title%: %exit_code%" warn=>0

; alias_sched_long - Alias for alias_sched_long. To configure this item add a section called: /settings/external scripts/alias/alias_sched_long
alias_sched_long = CheckTaskSched "filter=status = 'running' AND most_recent_run_time < -$ARG1$" "syntax=%title% (%most_recent_run_time%)" warn=>0

; alias_sched_task - Alias for alias_sched_task. To configure this item add a section called: /settings/external scripts/alias/alias_sched_task
alias_sched_task = CheckTaskSched "filter=title eq '$ARG1$' AND exit_code ne 0" "syntax=%title% (%most_recent_run_time%)" warn=>0

; alias_service - Alias for alias_service. To configure this item add a section called: /settings/external scripts/alias/alias_service
alias_service = checkServiceState CheckAll

; alias_service_ex - Alias for alias_service_ex. To configure this item add a section called: /settings/external scripts/alias/alias_service_ex
alias_service_ex = checkServiceState CheckAll "exclude=Net Driver HPZ12" "exclude=Pml Driver HPZ12" exclude=stisvc

; alias_up - Alias for alias_up. To configure this item add a section called: /settings/external scripts/alias/alias_up
alias_up = checkUpTime MinWarn=1d MinWarn=1h

; alias_updates - Alias for alias_updates. To configure this item add a section called: /settings/external scripts/alias/alias_updates
alias_updates = check_updates -warning 0 -critical 0

; alias_volumes - Alias for alias_volumes. To configure this item add a section called: /settings/external scripts/alias/alias_volumes
alias_volumes = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll=volumes FilterType=FIXED

; alias_volumes_loose - Alias for alias_volumes_loose. To configure this item add a section called: /settings/external scripts/alias/alias_volumes_loose
alias_volumes_loose = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll=volumes FilterType=FIXED ignore-unreadable 

; check_ok - Alias for check_ok. To configure this item add a section called: /settings/external scripts/alias/check_ok
check_ok = CheckOK Everything is fine!

; default - Alias for default. To configure this item add a section called: /settings/external scripts/alias/default
default = 


; Section for NRPE (NRPEListener.dll) (check_nrpe) protocol options.
[/settings/NRPE/server]

allow_arguments=1

; Section for NSCA passive check module.
[/settings/NSCA/client]


; Target definition for: default
[/settings/NSCA/client/targets/default]


; Section for NSClient (NSClientServer.dll) (check_nt) protocol options.
[/settings/NSClient/server]


; Section for system checks and system settings
[/settings/check/system/windows]


; Confiure which services has to be in which state
[/settings/check/system/windows/service mapping]


; Configure crash handling properties.
[/settings/crash]


; Section for the EventLog Checker (CheckEventLog.dll).
[/settings/eventlog]


; A set of options to configure the real time checks
[/settings/eventlog/real-time]


; A set of filters to use in real-time mode
[/settings/eventlog/real-time/filters]


; Section for external scripts configuration options (CheckExternalScripts).
[/settings/external scripts]

allow_arguments=1

; A list of scripts available to run from the CheckExternalScripts module. Syntax is: <command>=<script> <arguments>
[/settings/external scripts/scripts]

check_updates=cmd /c echo scripts\check_windows_updates.ps1; exit $LastExitCode | powershell.exe -command -

; A list of wrappped scripts (ie. using the template mechanism)
[/settings/external scripts/wrapped scripts]


; A list of templates for wrapped scripts
[/settings/external scripts/wrappings]


; Section for configuring the log handling.
[/settings/log]


; Configure log file properties.
[/settings/log/file]


; Section for configuring the shared session.
[/settings/shared session]


; A list of avalible remote target systems
[/settings/targets]

Please, let me know if you'll need any details about licensing, etc.

I'm looking forward to hearing from you.

Regards
slansing
Posts: 7698
Joined: Mon Apr 23, 2012 4:28 pm
Location: Travelling through time and space...

Re: Windows System Updates check issues

Post by slansing »

Hello,

I just did a fresh installation of NSClient++, and used the documentation to get the check_windows_updates.ps1 to execute remotely and return the info to Nagios. I was unable to re-produce your issue.. Have a look at this nsclient.ini file that I attached. Also, have you tried setting your execution policy to the following?:

Code: Select all

Set-ExecutionPolicy Bypass
Another thing, have you checked your NSClient++/scripts directory to see if a Windows updates cache was created?
You do not have the required permissions to view the files attached to this post.
tkurek
Posts: 8
Joined: Sat Sep 01, 2012 4:20 am

Re: Windows System Updates check issues

Post by tkurek »

I've just checked with your 'nsclient.ini' configuration file and execution policy set up to 'bypass'. Unfortunately, it doesn't work.

Good news are that I've also checked that on one more Windows server and it works without any issues. Maybe it's platform dependent issue then. So, to sum up:

* I'm able to get it working on Windows Server 2003 32-bit.
* I'm not able to get it working on Windows Server 2008 R2 64-bit.

I've also checked the updates cache mentioned by you and it looks like it's not being created on the problematic server neither when running the script via NRPE, nor when running it directly. However when running it directly, proper information are being displayed.

Please, let me know if there's anything more that you could help on that.
yancy
Posts: 523
Joined: Thu Oct 06, 2011 10:12 am

Re: Windows System Updates check issues

Post by yancy »

tkurek,

Can you post the results of just running the powershell script locally.

Also, try running the following:

Code: Select all

net stop nscp 

Code: Select all

c:\program files\nsclient++
nscp.exe test
inject the command "check_updates" into the test session.

Regards,

-Yancy
tkurek
Posts: 8
Joined: Sat Sep 01, 2012 4:20 am

Re: Windows System Updates check issues

Post by tkurek »

Hi again

Please, find the screenshots from running these commands in the attached files.

Thanks!
You do not have the required permissions to view the files attached to this post.
User avatar
CGraham
Posts: 115
Joined: Tue Aug 16, 2011 2:43 pm

Re: Windows System Updates check issues

Post by CGraham »

Can you do this test again, but run the command from the command line of the Nagios server?

Then do it one last time letting Nagios run the command itself.

The reason I'm asking for this is that I've had tremendous pain with the translation of the arguments and these tests help smoke that out.
SDohmen
Posts: 240
Joined: Thu Jun 30, 2011 4:14 am

Re: Windows System Updates check issues

Post by SDohmen »

I have had issues with the windows update scripts as well.

Lastly i found the script i attached. Its easy to use and works like a charm. It only had 1 minor error in it which i removed. Remove the .txt extension so you get the original .wsf file.

In the nsclient i use the following line to call for it.

commandwindows_updates=c:\windows\system32\cscript.exe //NoLogo //T:120 "C:\Program Files\NSClient++\scripts\check_windows_updates.wsf" /w:2 /c:3

I hope this helps.
You do not have the required permissions to view the files attached to this post.
scottwilkerson
DevOps Engineer
Posts: 19396
Joined: Tue Nov 15, 2011 3:11 pm
Location: Nagios Enterprises
Contact:

Re: Windows System Updates check issues

Post by scottwilkerson »

Thanks Sven!
Former Nagios employee
Creator:
Human Design Website
Get Your Human Design Chart
tkurek
Posts: 8
Joined: Sat Sep 01, 2012 4:20 am

Re: Windows System Updates check issues

Post by tkurek »

@CGraham:

I am still not able to get it working. Please, find the results that you asked about below:

Code: Select all

[root@it-monitoring01 ~]# /usr/local/nagios/libexec/check_nrpe -H jcnj375.antennasoftware.com -c check_updates -t 60
CHECK_NRPE: Received 0 bytes from daemon.  Check the remote server logs for error messages.
[root@it-monitoring01 ~]# /usr/local/nagios/libexec/check_nrpe -H jcnj375.antennasoftware.com -c check_updates
[root@it-monitoring01 ~]#

[root@it-monitoring01 ~]# tail -f /usr/local/nagios/var/nagios.log
[1347967769] Warning: Return code of 141 for check of service 'SYSTEM UPDATES' on host 'jcnj375.antennasoftware.com' was out of bounds.
@SDohmen:

Thank you very much for an update. I'll test the script provided by you and let all of you know the results.
scottwilkerson
DevOps Engineer
Posts: 19396
Joined: Tue Nov 15, 2011 3:11 pm
Location: Nagios Enterprises
Contact:

Re: Windows System Updates check issues

Post by scottwilkerson »

Code: Select all

Check the remote server logs for error messages
this would be referring to the nsclient.log file on the windows server.
Former Nagios employee
Creator:
Human Design Website
Get Your Human Design Chart
Locked