Page 1 of 3

IIS sites monitoring

Posted: Mon Aug 29, 2016 6:49 am
by Naveed
Hello,

I have configured IIS web server on windows 2012 R2 server, I have created some sites on it.

All my windows services are monitoring fine with nrpe on it.

Can someone suggest the way to monitor these services?

I have attached screenshots for verification.

Thanks

Re: IIS sites monitoring

Posted: Mon Aug 29, 2016 11:24 am
by mcapra
I suppose that would depend on what sorts of metrics you want to monitor. We have a few options for generic webpage response times and page sizes with our check_http plugin included with Nagios XI. This plugin is leveraged by our "Website URL" and "Website" wizards.

If you wanted to monitor usage of a given IIS app pool, @willemdh wrote a lovely powershell script for that:
https://github.com/willemdh/check_ms_ii ... ation_pool

At any rate, a good place to start when asking the question of "How do I monitor X" is the Nagios Exchange to see if other users have solutions for your use case.

Re: IIS sites monitoring

Posted: Tue Aug 30, 2016 10:15 am
by Naveed
Thanks,

I am able to monitor specific URLs now.

But on few URLs, its showing warning alerts with error on it

HTTP WARNING: HTTP/1.1 401 Microsoft_Dynamics_Commerce_Runtime_SessionExpired - 1898 bytes in 0.120 second response time

please explain this.

Thank you!

Re: IIS sites monitoring

Posted: Tue Aug 30, 2016 1:55 pm
by mcapra
I don't have much experience with Azure, but if the url/page you are checking has any sort of non-trivial session control in place seeing a 401 is expected behavior. If the page is expecting the user to have session data, you would need to find a way to create/pass session data as a part of the service check. That's not something I can provide much insight on without knowing how the web page/application behaves on the back-end.

Try adding -v to your command and running it from the CLI to get verbose output. That might offer additional insight on what is happening. If you need help with this, please share the check_command definition used for your service.

You can also pass POST data with check_http if you have a way to create a session:

Code: Select all

 -P, --post=STRING
    URL encoded http POST data

Re: IIS sites monitoring

Posted: Wed Dec 07, 2016 10:44 am
by Naveed
Hi,

Can you please share the syntax or usage of command for the already shared powershell script.

Thank you!

Re: IIS sites monitoring

Posted: Wed Dec 07, 2016 11:42 am
by Naveed
I have attached the iis application pool monitoring script from nagios xi forum..

[/settings/external scripts/wrapped scripts]
check_iis_apppool_state="C:\Program Files\NSClient++\scripts\check_iis_apppool_state.vbs" $ARG1$

My command and error message is also attached for review.

its giving error on line 87, whereas plugin contains only 72 lines.

please guide.

Thanks

Re: IIS sites monitoring

Posted: Wed Dec 07, 2016 11:43 am
by Naveed
script is attached as well

Code: Select all

===================
'------------------------------------------------------------------------------
' IIS v6 Check state of an application pool
' =========================================
'
' Author: Vincent BESANCON ([email protected])
' Usage:
'	check_iis_apppool_state.vbs <pool_name>
'		<pool_name>	- The name of the application pool.
'
' It returns:
'    - OK if state is running.
'    - CRITICAL if state is stopped.
'    - WARNING if state is stopping or starting.
'    - UNKNOWN for all the others (app pool not found, etc...).
'
' Nagios Agent configuration (NSC.INI):
'	check_iis_apppool_state=cscript.exe //nologo //T:60 scripts\check_iis_apppool_state.vbs $ARG1$
'------------------------------------------------------------------------------
'
' Args
strArgAppPool = Wscript.Arguments.Unnamed.Item(0)

' Establish the connection to the WMI provider
Set oWMIService = GetObject("winmgmts:root\microsoftiisv2")

' Search the AppPool passed as argument in the list of application pools
Set strQueryAppPools = oWMIService.ExecQuery("Select * from IIsApplicationPoolSetting where Name='W3SVC/AppPools/" & strArgAppPool & "'")

' Enumerate the pools
noError = False

For Each oAppPool in strQueryAppPools
	noError = True
	
	' Create nice messages for pool states
	Select Case oAppPool.AppPoolState
		Case 1
			poolState = "Starting"
			outputStatus = "WARNING: "
			outputCode = 1
		Case 2
			poolState = "Running"
			outputStatus = "OK: "
			outputCode = 0
		Case 3
			poolState = "Stopping"
			outputStatus = "WARNING: "
			outputCode = 1
		Case 4
			poolState = "Stopped"
			outputStatus = "CRITICAL: "
			outputCode = 2
		Case else
			poolState = "unknown"
			outputStatus = "UNKNOWN: "
			outputCode = 3
	End Select
	
	' Create a clear name for the pool (remove the leading info)
	poolName = Replace(oAppPool.Name, "W3SVC/AppPools/", "")
	
	' Output
	Wscript.Echo outputStatus & poolName & ", State: " & poolState
Next

' Error handling
If Not noError Then
	' Error message
	Wscript.echo "UNKNOWN: Error during the WMI query for app pool " & strArgAppPool & " !"
	' Exit & return code
	WScript.Quit(3)
Else
	' Clean exit
	WScript.Quit(outputCode)
End If

Re: IIS sites monitoring

Posted: Wed Dec 07, 2016 3:41 pm
by ruffsense
why not use the powershell script. @Naveed
mcapra wrote:I suppose that would depend on what sorts of metrics you want to monitor. We have a few options for generic webpage response times and page sizes with our check_http plugin included with Nagios XI. This plugin is leveraged by our "Website URL" and "Website" wizards.

If you wanted to monitor usage of a given IIS app pool, @willemdh wrote a lovely powershell script for that:
https://github.com/willemdh/check_ms_ii ... ation_pool

At any rate, a good place to start when asking the question of "How do I monitor X" is the Nagios Exchange to see if other users have solutions for your use case.

Re: IIS sites monitoring

Posted: Wed Dec 07, 2016 4:35 pm
by mcapra
Naveed wrote: its giving error on line 87, whereas plugin contains only 72 lines.
The plugin i've shared has 295 lines total.
https://github.com/willemdh/check_ms_ii ... n_pool.ps1

I would highly recommend using the plugin created by @WillemDH as I was never able to get the one you're currently trying to use to work correctly.

Re: IIS sites monitoring

Posted: Thu Dec 08, 2016 7:21 am
by Naveed
Thank you

I have placed your powershell script in "C:\Program Files\NSClient++\scripts\\check_iis.ps1" and made below changes in nsclient.ini file.


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

check_iis_apppool_state=wscript.exe //nologo //T:60 "C:\Program Files\NSClient++\scripts\\check_iis.ps1" $ARG1$

ps1 = cmd /c echo scripts%SCRIPT%\%ARGS%; exit($lastexitcode) | powershell.exe -ExecutionPolicy Bypass -command -

Command in nagios is attached,

Service results are as CHECK_NRPE: Socket timeout after 30 seconds.

Please check and guide If I am doing anything wrong here.

Thanks