monitors:aspnethealth

Error loading plugin struct
ParseError: syntax error, unexpected 'fn' (T_STRING), expecting :: (T_PAAMAYIM_NEKUDOTAYIM)
More info is available in the error log.
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


monitors:aspnethealth [2010/06/22 08:36] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== ASP.NET Performance Counter Pack ======
 +
 +^ Author | [[ neil_franken@yahoo.com | Neil Franken]] |
 +^ Compatibility | Xymon 4.2 |
 +^ Requirements | IIS, ASP.NET, VBS |
 +^ Download | None |
 +^ Last Update | 2010-06-22 |
 +
 +===== Description =====
 +This script will monitor some basic performance counters for the overall ASP.NET Health on a server. 
 +The counters monitored are:
 +  * Applications Restarts
 +  * Applications Running
 +  * Requests Current
 +  * Requests Queued
 +
 +===== Installation =====
 +=== Client side ===
 +Place the script on the IIS Server you want to monitor and add a appropriate section to the BBWin.cfg externals section.
 +
 +Typically it would be configured like this. <load value=“cscript c:\VBSScripts\aspnethealth.vbs” timer=“5m” />
 +
 +Once this is added to the cfg file it should create a aspnethealth file in the tmp directory of BBwin for upload. If this is the case it is working.
 +
 +
 +=== Server side ===
 +While the Xymon server does not require any installation you can add the following to the hobbitserver.cfg to create a graph with some of the more important values on. 
 +
 +== 1) Adding NCV Definition to the hobbitserver.cfg file ==
 +
 +    * Add aspnethealth=ncv to the TEST2RRD section of the hobbitserver.cfg file. Please note that the aspapplications name must reflect the name of the test. You will change this to monitor a specific application.
 +    * Add the following definition to the hobbitserver.cfg. 
 +
 +<code>NCV_asphealth="RequestsQueued:GAUGE,RequestCurrent:GAUGE,ApplicationRestarts:GAUGE,ApplicationRunning:GAUGE"</code>
 +
 +    * Restart Xymon
 +
 +== 2) Adding Graph Definition to the hobbitgraph.cfg file ==
 +  * Add the following to the file
 +<hidden onHidden="Show Graph Definition ⇲" onVisible="Hide Graph Definition ⇱">
 +<code>
 +[aspnethealth]
 +
 + TITLE ASP Overall Health
 + YAXIS Number
 + DEF:RequestsQueued=asphealth.rrd:RequestsQueued:AVERAGE
 + DEF:RequestCurrent=asphealth.rrd:RequestCurrent:AVERAGE
 + LINE2:RequestsQueued#FF0000:RequestsQueued
 + LINE2:RequestCurrent#00FF66:RequestCurrent
 + COMMENT:\n
 + GPRINT:RequestsQueued:LAST:RequestsQueued\: %5.1lf%s (cur)
 + GPRINT:RequestsQueued:MAX: \: %5.1lf%s (max)
 + GPRINT:RequestsQueued:MIN: \: %5.1lf%s (min)
 + GPRINT:RequestsQueued:AVERAGE: \: %5.1lf%s (avg)\n
 + GPRINT:RequestCurrent:LAST:RequestCurrent\: %5.1lf%s (cur)
 + GPRINT:RequestCurrent:MAX: \: %5.1lf%s (max)
 + GPRINT:RequestCurrent:MIN: \: %5.1lf%s (min)
 + GPRINT:RequestCurrent:AVERAGE: \: %5.1lf%s (avg)\n
 +
 +</code>
 +</hidden>
 +===== Source =====
 +==== aspnethealth.vbs====
 +
 +<hidden onHidden="Show Code ⇲" onVisible="Hide Code ⇱">
 +<code>
 +' ASP.NET Applications Performancer Counters
 +' Author: Neil Franken
 +' email: neil_franken@yahoo.com
 +' Description: 
 +' This script collects some performance counters related to a overall ASP health i.e. the server. 
 +'
 +' You are welcome to use, modify, mangle and do what you please with this script just please
 +' keep me in the loop about bugs,updates and or improvements.
 +
 +' IMPORTANT NOTES:
 +' Before running this script please do the following. Open a command prompt on the SQL server where the script
 +' runs. Run the following command wmiadap/f.
 +' Open the services manager screen and restart/start the WMI performance adapter service. This service must be running
 +' to read the performance counters via the WMI interface.
 +
 +' KNOWN ISSUE:
 +' I encountered a problem where the CPU was 64 Bit but the installed OS was 32Bit. This caused the registry read to fail.
 +' If you have a 32 Bit OS running on a 64 bit system yuo will have to change the script to point to the BBWin\tmp folder 
 +' as the script will attempt to read the value from a registry key that dont exist. Also comment out the ProcessorCheck function.
 +'
 +
 +
 +' Version 0.5 Released: 22/06/2010
 +'
 +
 +strAlarmState = "green"
 +strTestName = "aspnethealth" 'this Is the filename i.e. column name in xymon.
 +strOutput = ""
 +Const strComputer = "."
 +Dim objWMIService, colItems, objItem
 +Dim ErrorPerSec, ReqExecuting, ReqFailed, ReqNotAuthorized, ReqNotFound, ReqPerSeq,ReqTimedOut
 +Set ws = WScript.CreateObject("WScript.Shell")
 +
 +ProcessorCheck
 +If Proc = "x86" Then
 +           extPath = "c:\"
 + extPath = ws.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\BBWin\tmppath") 'Registry key that stores the ext script path on 32bit Architecture
 + ' WScript.Echo Proc
 +Else
 +           extPath = "c:\"  
 + extPath = ws.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\BBWin\tmppath") 'Registry key that stores the ext script path on 64bit Architecture
 + ' WScript.Echo Proc
 +End If
 +extPath = "c:\"
 +
 +' Usage of the CheckValue,CheckReserveValue Functions:
 +' CheckValue takes the Performance Counter value,a description which appears on Xymon,the warning value and the Alarm value and does a check for values above the warn and alarm thresholds.
 +' CheckReverseValue takes the Performance Counter value,a description which appears on Xymon,the warning value and the Alarm value and does a check for values below the warn and alarm thresholds.
 +'
 +
 +' ASP.NET Check Starts Here
 +strOutput = strOutput & vbCrLf & "ASP.NET Application Information:" & vbCrLf
 +Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
 +Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfFormattedData_ASPNET_ASPNET",,48)
 +For Each objItem in colItems
 + AppRestarts =objItem.ApplicationRestarts
 + AppRunning  =objItem.ApplicationsRunning
 + ReqCurrent =objItem.RequestsCurrent
 + ReqQueued =objItem.RequestsQueued
 + Exit For
 +Next
 +strOutput = strOutput & CheckValue(AppRestarts,"ApplicationRestarts",1, 5)
 +strOutput = strOutput & CheckValue(AppRunning,"ApplicationRunning",3, 5)
 +strOutput = strOutput & CheckValue(ReqQueued,"RequestFailed",50, 150)
 +strOutput = strOutput & CheckValue(ReqCurrent,"RequestCurrent",100, 300)
 +
 +
 +' Write the file for BB
 +WriteFile extPath, strTestName, strAlarmState, strOutput
 +
 +'===========================================================
 +' FUNCTIONS and SUBS start here
 +
 +
 +
 +Sub ProcessorCheck ()
 + Dim  WshShell, WshSysEnv
 +
 + Set WshShell = WScript.CreateObject("WScript.Shell")
 + Set WshSysEnv = WshShell.Environment("SYSTEM")
 + Proc = WshSysEnv("PROCESSOR_ARCHITECTURE")
 +End Sub
 +
 +
 +
 +' This is used to check the actual value against the warning and alarm.
 +Function CheckValue(iObjectValue,strObjectDesc,iWarnValue,iAlarmValue)
 + If iWarnValue > iAlarmValue Then
 + CheckValue = "&red" & " " & strObjectDesc & ":" & vbTab & "Object is Misconfigured"
 + If strAlarmState <> "red" Then
 + strAlarmState = "red"
 + End If
 + Else
 + If CDbl(iObjectValue) > CDbl(iWarnValue) Then
 + If  CDbl(iObjectValue) >  CDbl(iAlarmValue) Then
 + CheckValue = "&red" & " " & strObjectDesc & ":" & vbTab & iObjectValue & vbCrLf
 + SetAlarmStatus "red"
 + Else
 + CheckValue = "&yellow" & " " & strObjectDesc & ":" & vbTab & iObjectValue & vbCrLf
 + 'CheckValue = "&yellow" &  strObjectDesc &  vbTab & iObjectValue & vbCrLf
 + SetAlarmStatus "yellow"
 + End If
 + Else
 + CheckValue = "&green" & " " & strObjectDesc & ":" & vbTab & iObjectValue & vbCrLf
 + 'CheckValue = "&green"  & strObjectDesc & vbTab & iObjectValue & vbCrLf
 + End If
 + End If
 +End Function
 +
 +
 +' This is used to check the actual value against the warning and alarm.
 +' This one the alarm will be a lower value than the warning. (Values Decrease rather than increase)
 +Function CheckReverseValue(iObjectValue,strObjectDesc,iWarnValue,iAlarmValue)
 + If  CDbl(iWarnValue) <  CDbl(iAlarmValue) Then
 + CheckReverseValue = "&red" & " " & strObjectDesc & ":" & vbTab & "Object is Misconfigured"
 + If strAlarmState <> "red" Then
 + strAlarmState = "red"
 + End If
 + Else
 + If  CDbl(iObjectValue) <  CDbl(iWarnValue) Then
 + If  CDbl(iObjectValue) <  CDbl(iAlarmValue) Then
 + CheckReverseValue = "&red" & " " & strObjectDesc & ":" & vbTab & iObjectValue & vbCrLf
 + SetAlarmStatus "red"
 + Else
 + CheckReverseValue = "&yellow" & " " & strObjectDesc & ":" & vbTab & iObjectValue & vbCrLf
 + SetAlarmStatus "yellow"
 + End If
 + Else
 + CheckReverseValue = "&green" & " " & strObjectDesc & ":" & vbTab & iObjectValue & vbCrLf
 + End If
 + End If
 +End Function
 +
 +
 +' This is called to set the overall alarm status.
 +Sub SetAlarmStatus(strnewAlarmState)
 + If strnewAlarmState = "red" Then
 + strAlarmState = strnewAlarmState
 + ElseIf strnewAlarmState = "yellow" Then
 + If strAlarmState <> "red" Then
 + strAlarmState = strnewAlarmState
 + End If
 + End If
 +End Sub
 +
 +
 +' This SUB is used for outputting the file to the external's directory in bb
 +Sub WriteFile(strExtPath, strTestName, strAlarmState, strOutput)
 + Set fso = CreateObject("Scripting.FileSystemObject")
 + strOutput = strAlarmState & " " & Date & " " & Time & vbCrLf & vbCrLf & strOutput & vbCrLf
 + Set f = fso.OpenTextFile(strExtPath & "\" & strTestName , 8 , True)
 + f.Write strOutput
 + f.Close
 + Set fso = Nothing
 +End Sub
 +</code>
 +</hidden>
 +
 +===== Known  Bugs and Issues =====
 +    * Running a 32 Bit Windows on a 64 Bit CPU(It happens apparently). This causes the script to look for the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\BBWin\tmppath registry key. This does not exist in a 32 windows version and the script will bomb. To fix comment out the Processor check and hard code(yuck) the bath to the BBwin\tmp folder.
 +
 +    * When running the script it throws a null exception which looks something like C:\Program Files (x86)\BBWin\ext\aspnethealth.vbs(103, 2) (null). To fix this problem open a command prompt and execute the following command wmiadap/f. Open the administrative tools under control panel and run the windows services manager. Right at the bottom of the list there is a WMI Performance Adapter service. Restart the service if started, if the service is not running please start it.
 +
 +
 +===== To Do =====
 +  * I am not a IIS/ASP.NET expert so these performance counters are just what I used to monitor a problematic server. I am sure they can be improved. Let me know and I can help.
 +
 +===== Credits =====
 +  * Neil Franken
 +  * Chris Walker, Liberty Enterprises for his original IISHealth script.
 +
 +===== Changelog =====
 +
 +  * **2010-06-22**
 +    * Initial release
  
  • monitors/aspnethealth.txt
  • Last modified: 2010/06/22 08:36
  • by 127.0.0.1