I wanted to monitor our Exchange Front-End server and OWA URL at ISA server (in DMZ). There are tons of tools/scripts available to monitor web sites. But, I usually create a script by myself to fit my own needs.
This script is really really simple and gets the job done. Once it called with a web site URL, it will check the availability. If the web site is not reachable, it will send emails to specified administrators. Hope somebody make use of this simple script.
1. Copy and Paste the following script in Notepad. Save this script as "WebSiteMon.vbs" (type with quotes in File->Save dialog)
2. Search for "<<<<<" in this script and change the values like SMTP server name, Mail TO addresses
3. Create Batch file (somename.bat) and call this script by CScript WebSiteMon.vbs http://owa.xyz.com from the batch file.
4. Schedule to run this batch file every 15 minutes
5. Any Questions…leave a reply for this blog.
‘===============================================================
‘ Name: WebSiteMon.vbs
‘ Purpose:Checks availability of the given server and sends email
‘ if the server is not reachable.
‘ Paramenters: website URL (e.g., http://www.yahoo.com)
‘ Written By: Anand Venkatachalapathy
‘ Written Date: Aug 17th 2007
‘===============================================================
Dim MonitoredSite
Dim objWinHttp, strHTMResponse, strHTMStatus
Dim sTo, sSub, sBody‘Get the Web Site URL from Arguments array
MonitoredSite = WScript.Arguments(0)‘Open Windows HTTP Request object
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")‘On Error is set to Resume Next. This is important.
On Error Resume Next‘Open (get) the website
objWinHttp.Open "GET", MonitoredSite
objWinHttp.Send
objWinHttp.WaitforResponse(10000)‘Get the website page data
strHTMResponse = objWinHttp.ResponseText
strHTMStatus = objwinHttp.status‘If Error is generated, website is not available
If Err.Number <> 0 Then
sTo = "JohnDoe@xyz.com;JoeAverage@xyz.com" ‘<<<<< Change E-Mail Addresses
sSub = MonitoredSite & " is NOT available"
sBody = MonitoredSite & " is NOT available. This web site may be down. " & vbCrLf & vbCrLf & _
"This alert mails will be send again in 15 minutes if the web site is not available."
Alert_Admins sTo,sSub,sBody
WScript.Echo MonitoredSite & " is not reachable and may be down"
End If‘Memory wipe the objWinHttp
Set objWinHttp = Nothing‘*-*-*-* End Of Script *-*-*-*
‘===============================================================
‘ Name: Alert_Admins
‘ Purpose: Send email using SMTP server.
‘ Input: strTo – Who to send to, strSub – Subject of the message
‘ strBody – Body of the message
‘ Output: Sends the emails to the strTO recipients
‘===============================================================
Sub Alert_Admins( strTo,strSub,strBody)‘* iMsg – holds CDO.Message object
‘* Flds – Enumeration for CDO SMTP object properties
‘* iConf – holds CDO.Configuration
Dim iMsg, Flds, iConf‘* sSMTPServerName – SMTP Server Name
Dim sSMTpServerName‘* Assign your SMTP server here
sSMTPServerName = "SMTPServer.xyz.com" ‘<<<<< Change the SMTP server name‘* Assign cdoSendUsingPort is set to 2, i.e., send using SMTP (25) port
Const cdoSendUsingPort = 2‘* Create CDO Objects and assign to variables
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields‘* Assign values to Flds class properties
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = sSMTPServerName
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 25
.Update
End With‘* Assign message properties and Send the mail
With iMsg
Set .Configuration = iConf
.Fields("urn:schemas:httpmail:importance").Value = 2 ‘Setting Mail importance to High (2)
.Fields.Update
.To = strTo
.From = "SystemAdministrator@xyz.com" ‘Fake, but make-sense email FROM address
.Sender = "Administrator@xyz.com" ‘Return Email address
.Subject = strSub
.TextBody = strBody
.Send
End WithEnd Sub