views:

870

answers:

6

Let's say for example you have 5 different companies using the same platform (Windows based) all wrote their own web services, what technique using C# and .Net 3.5 would you recommend using to monitor all their different web services?

My intention is to build an application that provides visual feedback on service statuses to site administrators and of course e-mail/sms alerts as needed. Is there a best practice or methodology to follow in your opinion?

In addition, are there any windows based tools available to perform this that I'm unaware off? Preferrably open-source?

*Edit: Think of the end result, an application that just shows a red or green light next to the services running across the different companies.

Company 1
     > Web Service 1 - Green
     > Web Service 2 - Green
Company 2
     > Web Service 1 - Red
     > Web Service 2 - Green
+1  A: 

If they write aspx web services, all monitoring best practices described for ASP.NET applications, like ASP.NET Health Monitoring Overview MSDN article and in ASP.NET Health Monitoring are applicable

Also see an SO question Tools and methods for live-monitoring ASP.NET web applications?

Bogdan_Ch
Thanks for respoding. I had a look at your links, but it's not quite what I had in mind. Although the .NET Profiler application is a great suggestion.
Mr. Smith
+1  A: 

Standard tools will allow you to ping the IP or probe the HTTP port - these are cheap & simple ways of verifying that the web service is minimally available. In order to validate that they are also fully functional, you will need to do a bit more... your monitoring package will need valid credentials to login to the various web services, not to mention specific proxies & business logic to execute against each one.

Have you looked at MOM (especially MOM management packs)?

Addys
+3  A: 

Big Brother System and Network Monitor, will probably do most of what you want. It is extensible and plug-ins can be written in any language. They have a free editon of their monitoring software:

http://www.bb4.org/home1.html

You should also use a local monitor on each server that is being monitored. This is because it is difficult to diagnose problems remotely. This blog has a good discussion of the problem and details of a local monitor design pattern:

http://sleeksoft.co.uk/public/techblog/articles/20041218%5F1.html

macleojw
+1  A: 

The most commonly used open source monitoring tool is Nagios. Built in it has support for many different services, and you can always write a script or app to test any service not already supported.

Stefan Rusek
+1  A: 

You should try PolyMon, a .NET based, open-source monitoring tool on CodePlex: http://polymon.codeplex.com/

At least for our case, it hit the sweet-spot of functionality and a lean and easy setup.

You can choose from some out-of-the-box tasks like Ping or URL monitoring, but you can also easily implement your own more complex tasks. Works quite well for us.

The tool itself is not distributed, but you can easily set up two instances of the service (e. g. on servers in different locations) and monitor the same services, or use one instance to monitor the other.

We experienced just one issue that was very annoying and a little freaky, when a server that was running both PolyMon and the SQL Server instance used by PolyMon repeatedly crashed on reboots (endless loop of reboot). Seems to be some kind of race condition. Therefore I strongly recommend to host the PolyMon service and the SQL Server service on different (virtual) machines, or set the start-up type of the PolyMon service to "Manual" instead of "Automatic", and start PolyMon manually after everything else booted, to avoid this problem.

markus
Made of win, thank you Markus.
Mr. Smith
+1  A: 

There are tools like IPSentry with which you can make HTTP requests and check the returning data...

kitsune