Search code examples
performancesql-server-2008iis-7measurementperformancecounter

Monitoring dashboard for IIS and SQL Server


We have developed a .NET web application that uses SQL Server as a backend. Now we would like to provide a monitoring dashboard app for the tech support team. The idea is that this monitoring app will show a global picture of the "health" of the web servers hosting the application and the database servers holding the data. This "health" measure should reflect the workload of each machine, and would be a number (between 0 and 100, let's say) computed from some inputs that I need to determine.

For the web servers, I imagine that HTTP requests per time unit must be considered, and perhaps bandwidth consumed.

For the database servers, I reckon that transactions per time unit and maybe locks or some other indicator or database concurrency should be used.

In addition, some other generic inputs, such as CPU load, memory usage and disk queue length should also be taken into account.

All these factors should be weighed as necessary to obtain the final "health" figure for each server.

Edit. The idea is that the "health" measure gives the technician a global picture view of a server's workload. If a server appears with low "health", the technician will be able to drill down and look at the details of the machine to see what specific inputs are causing the low "health".

My questions are:

  1. Do you think this "health" measure makes sense?
  2. I am thinking of using performance counters to capture the input data. Is this the best option?
  3. Can you suggest appropriate inputs for the web servers (IIS 7) and the database servers (SQL Server 2008)?

Thanks.


Solution

  • Do you think this "health" measure makes sense?

    No. The first thing someone will ask if your single number is off is "what's wrong?" Also, consider the fact that trend analysis can be very important for early error detection.

    I am thinking of using performance counters to capture the input data. Is this the best option?

    I think that would be an excellent starting point.

    Can you suggest appropriate inputs for the web servers (IIS 7) and the database servers (SQL Server 2008)?

    This is a big subject for a forum post, and the answer depends heavily on the details of your app. In broad terms, you want to look at things like the frequency of error conditions, some sense/measure of throughput for each subsystem, counts for how often out-of-process calls exceed performance thresholds, etc. It's usually a good idea to show current numbers as well as historical and trends.

    You might want to have a look at Microsoft's product in this area: Service Center Operations Manager (SCOM), to see the types of things they do.