For a while now I have wanted a way to monitor my website. I don't visit the site every day. That meant that if there was ever a failure, it could be weeks before I found out. I have also found that periodically "hitting" my website prevents the web server from unloading the site from memory.
Guessing that I wasn't the only person with this issue, I did some research and found two types of solutions. The first type of solution is what I would describe as a Website Monitoring Service Provider. In other words, a company that monitor websites for a monthly and/or annual fee. The second type of solution I found could be described as Website Monitoring Software. Typically, this was an application I could install on my PC and configure to monitor one or more websites.
Faced with two kinds of solutions, I started thinking about the features I really wanted. Here is what I came up with:
- Monitor Multiple Websites - the ability to monitor my website and websites for my clients.
- Control the Frequency of Checks - the ability to check the "Home" page every 10 minutes, but only call the "System Maintenance" page every 24 hours.
- Control the Response Timeout - the "Home" page should respond in less than 15, whereas the "System Maintenance" page may need several minutes.
- Failure Notification - the option to notify me if a website did not respond in the time specified.
- Resumed Notification - notify me when a website was back online if the previous check failed. In my experience with using website hosting companies, it is not uncommon for a website to be un-responsive one moment and then a minute or two later be start working again
Based on these criteria, I was able to immediately rule out both the Website Monitoring Service Providers and Website Monitoring Software that I had previously found. The deciding factor was (A) the solution did not have the features I needed or (B) the price was too high.
One of the perks of being a software developer is that if you can't find an application that does exactly what you want...you have the skills to build it yourself. (Hmm, it can be a curse too.) And that is what I did. Here's how it works.
WSM.Service.EXE is an application for monitoring one or more websites. It installs as a Windows Service and runs in the background without any user interface. This gives me the benefit of using the Windows Service Control Manager to Start, Stop, Pause, Resume, and Restart the application. I also don't have to worry about restarting the application if the PC is rebooted.

The WSM.Service.EXE application records all events (success, failure, error) in the Windows Application Event Log with a Source of Website Monitor. This gives me the benefit of using the Windows Event Viewer to see what happened and when. I also don't have to worry about purging old events, because Windows can handle this automatically.

The WSM.Service.EXE application does include command line options for installing, uninstalling, starting, and stopping the service. Keep in mind that Administrative privileges are required to perform these commands.

All configuration settings are stored in two XML files: Websites.XML and WSM.Service.exe.config. At this point I did not create a user interface for modifying these files. This is something that I am considering for the future.
If you would like a copy of this application, you can download the latest version from http://pfsolutions-mi.com/Product/WebsiteMonitor. When using this application, please keep the following in mind
- This application requires Microsoft .NET Framework 4 Client Profile.
- Be sure to read the README.TXT file for instructions on installing the service and how to modify the configuration files.
- I'd love to hear any feedback. What do you like, what do you not like, what kind of features would you like to see in future versions?
Links:
Microsoft .NET Framework 4 Client Profile
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab