Differences

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

Link to this comparison view

monitors:winuptime [2009/11/23 06:13] (current)
Line 1: Line 1:
 +====== Windows Uptime ======
 +
 +^ Author | [[ craig.boyce@rodney.govt.nz | Craig Boyce ]] |
 +^ Compatibility | Xymon 4.2 |
 +^ Requirements | Windows, BBWin |
 +^ Download | None |
 +^ Last Update | 2007-07-16 |
 +
 +===== Description =====
 +A .vbs script that works with bbwin that you can use to alert when a client exceeds a specified number of days without a restart.
 +
 +===== Installation =====
 +=== Client side ===
 +  - Copy the script to the bbwin\ext directory or any sub directory you would prefer.
 +  - Update the bbwin\etc\bbwin.cfg externals section to include the script as per below making sure the path is correct.<​file>​
 +<​externals>​
 + <​setting name="​timer"​ value="​3m"​ />
 + <​setting name="​logstimer"​ value="​60s"​ />
 + <load value="​cscript //B ..\ext\Uptime.vbs"​ timer="​5m"​ /> 
 +</​externals>​
 +</​file>​
 +
 +The script allows the changing of the test column name and uptime duration before alerting by changing the following lines in the script.
 +
 +| strTestName = "​uptime"​ | Change this to what you want the test column to be. |
 +| strUpTime = "​30"​ | Change this to the length of time required before alerting a reboot is required. |
 +
 +=== Server side ===
 +  * None
 +
 +===== Source =====
 +==== Uptime.vbs ====
 +<hidden onHidden="​Show Code ⇲" onVisible="​Hide Code ⇱">​
 +<code vb>
 +'​==========================================================================
 +' NAME: Uptime.vbs
 +' COMMENT: Check Uptime of server and report if greater than 30 days
 +' AUTHOR: Craig Boyce, Rodney District Council
 +' EMAIL: craig.boyce@rodney.govt.nz
 +' DATE  : 30/10/2006
 +' VERSION : 2.00
 +'​==========================================================================
 +
 +On Error Resume Next
 +
 +Dim objShell, objWMIService,​ WSHNetwork
 +Dim ServerName, strTestName,​ strAlarmState,​ strUpTime, strOutput
 +Dim logmessage, logfile, fso, f
 +
 +' Set Variables
 +
 +Set objShell = WScript.CreateObject("​WScript.Shell"​)
 +Set WSHNetwork = WScript.CreateObject("​WScript.Network"​)
 +
 +ServerName = objShell.ExpandEnvironmentStrings("​%COMPUTERNAME%"​)
 +
 +strTestName = "​uptime"​ ' Change this to what you want the test column to be.
 +strUpTime = 30 ' Change this to the length of time required before alerting a reboot is required.
 +
 +strAlarmState = "​green"​
 +strOutput ​  = ""​
 +
 +' Check to see If used with BBWin or Big Brother client and set extPath.
 +extPath = objShell.RegRead("​HKLM\SOFTWARE\BBWin\tmpPath"​)
 +If extPath = ""​ Then
 + extPath = objShell.RegRead("​HKLM\SOFTWARE\Quest Software\BigBrother\bbnt\ExternalPath\"​)
 +End If
 +
 +' ========================================
 +' Main Code Starts Here
 +
 +strComputer = "​." ​  '​ "​."​ for local computer ​
 +
 +On Error Resume Next 
 +Set objWMIService = GetObject("​winmgmts:"​ & "​{impersonationLevel=impersonate}!\\"​ & strComputer & "​\root\cimv2"​) ​
 +
 +If Err.Number = 0 Then 
 +     On Error Goto 0 
 +     ​strQuery = "​select * from Win32_PerfRawData_PerfOS_System" ​
 +     Set colObjects = objWMIService.ExecQuery(strQuery) ​
 +
 +
 +     For Each objWmiObject In colObjects ​
 +       ​intPerfTimeStamp = objWmiObject.Timestamp_Object ​
 +       ​intPerfTimeFreq = objWmiObject.Frequency_Object ​
 +       ​intCounter = objWmiObject.SystemUpTime ​
 +     ​Next ​
 +
 +     '​ Calculation in seconds: ​
 +     '​Calculations for Raw Counter Data:​PERF_ELAPSED_TIME ​
 +     '​http://​msdn.microsoft.com/​library/​en-us/​perfmon/​base/​perf_elapsed_tim... ​
 +     ​iUptimeInSec = (intPerfTimeStamp - intCounter)/​intPerfTimeFreq ​
 +    ​
 +     '​ convert the seconds ​
 +     ​sUptime = ConvertTime(iUptimeInSec)
 +            ​
 + If CInt(Left(sUptime,​ 2)) > CInt(strUpTime) Then
 + strOutput = strOutput & "​Uptime:​ " & sUptime & "​exceeds " & strUpTime & " Days , This Server needs to be scheduled for a monthly restart"​
 + strAlarmState = "​red"​
 + Else
 + strOutput = strOutput & "​Uptime:​ " & sUptime
 + strAlarmState = "​green"​
 + End If
 +
 +End If 
 +
 +' Write the file for BB
 +WriteFile extPath, strTestName,​ strAlarmState,​ strOutput
 +
 +'​===========================================================
 +' FUNCTIONS and SUBS start here
 +
 +' 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
 +
 +Function ConvertTime(seconds) ​
 +     ​ConvSec = seconds Mod 60 
 +     ​ConvMin = (seconds Mod 3600) \ 60 
 +     ​ConvHour =  (seconds Mod (3600 * 24)) \ 3600 
 +     ​ConvDays =  seconds \ (3600 * 24) 
 +     ​ConvertTime = ConvDays & " days " & ConvHour & " hours " & ConvMin & " minutes " ​
 +End Function
 +</​code>​
 +</​hidden>​
 +
 +===== Known  Bugs and Issues =====
 +  * None
 +
 +===== To Do =====
 +
 +===== Credits =====
 +
 +===== Changelog =====
 +
 +  * **2007-07-16**
 +    * Initial release
  
  • monitors/winuptime.txt
  • Last modified: 2009/11/23 06:13
  • (external edit)