Custom URL Monitoring Part I – The Design

The out of the box Web Application template that exists in OpsMgr 2007 SP1 and R2 is useful but there are situations where it just doesn’t fit.

Consider the following scenario: The Contoso Corporation’s global IT headquarters is located in Richardson, TX.  They have over 2,000 retail stores spread out across the world and over slow connections.  Each of these retail stores have two local servers.  One of these servers is a web server that hosts 3 web applications which are used for internal tools critical to the operation of the retail store.  The CIO wants the main page of SCCM Management Point site to be checked every 15 seconds to ensure the site is up.  She wants the POS Web Application site to be checked every 15 seconds to ensure it is responding within 500ms.  Finally, she also wants Store Inventory site to be checked for the text “store inventory web application” every 15 seconds to make sure the site is displaying the appropriate information.  Because of the remote nature of these retail stores the CIO wants the check to be done from the non-web server at each retail store where the websites are going to be viewed.

The out-of-the-box Web Application template in OpsMgr doesn’t fit well in this scenario because we need to monitor 6,000 websites every 15 seconds from 2,000 different watcher nodes.  One of my customers has a very similar scenario in their environment and asked for a custom solution that uses OpsMgr.  I created a solution that does these checks every 15 seconds from the local watcher node at each retail store.  The cool part about this solution is we only use 3 monitors to watch all 6,000 web sites, it is dynamic so once the solution is in place there is very little additional administrative overhead, and it scales incredibly well.

Because of the complexity of this management pack I decided to split this topic up into multiple blog entries.  The primary purpose of this series is to offer an alternative to the Web Application template in OpsMgr and the secondary purpose is to show how I developed this solution.  The series is broken up into the following posts:

URL Monitoring Part I – The Design
URL Monitoring Part II – The Classes and Discoveries
URL Monitoring Part III – The Monitors
URL Monitoring Part IV – Getting More Advanced
URL Monitoring Part V – Monitoring URLs from a Resource Pool

My design is generic and was designed for OpsMgr 2007 SP1 although it should also work in R2.  It consists of 3 discoveries, 3 classes, 3 monitors, 3 monitor types, and 4 data sources.  I attached the entire solution to this blog entry.

Here is a diagram of the design of this MP:

URLMon

To test this MP in the lab do the following:

1.  Create a test website with the text “store inventory web application” on the main page
2.  On several OpsMgr agents (which would act as watcher nodes) create the following registry entries:
    -  HKLM\Software\URLWatcher\SCCMMP (Key)
      -  HKLM\Software\URLWatcher\SCCMMP\SCCMMP:https://<yourwebsite> (String Value)
    -  HKLM\Software\URLWatcher\POS (Key)
      -  HKLM\Software\URLWatcher\POS\POS:https://<yourwebsite> (String Value)
    -  HKLM\Software\URLWatcher\StoreInv (Key)
      -  HKLM\Software\URLWatcher\StoreInv\StoreInv:https://<yourwebsite> (String Value)
3.  Import the MP and wait 5 minutes
4.  Under Monitoring\Discovered Inventory look at the 3 classes in the Website Watcher Library MP
5.  Change the text and bring the website up/down to view the results

Custom.WebsiteWatcher.Library.xml