views:

59

answers:

3

I am looking for a solution for monitoring a number of .NET components for a system where performance is critical. I have been looking at performance counters, which generally provide the information needed.

The end result is that I would like a number of counters written to a database to be able to report upon. I would like to hold a history of the counters but to be further summarised as time goes by, i.e. show average for hour, day, week etc.

Performance and availability is key for this system. Are performance counters the way to go or is there a better solution to collect required performance statistics? I would welcome any suggestions, links etc

A: 

I've used perf counters in the past to record what's going on with a given application but it all depends on what data you want and how you eventually interpret that information, but that's another question.

I suggest you could create a separate library that you can load from any app that will run on it's own thread monitoring the system that's hooked into it. You should make it possible to change how often the thread checks the perf counters as you really don't want to be releasing a dll if you find that's this thread is hogging the CPU.

You're probably already aware of the System.Diagnostics namespace where you can find all the counters you might ever need! Obviously there nothing to stop you logging this data, once collected, to a db of your choice. Hope that helps a bit.

LondonITGeek
A: 

My preference is something like Introscope from CA's Wily divison. Something that byte code instruments the app (aspects) and reports to a central monitoring server.

Mike
A: 

Look at PolyMon or PRTG, urls

http://polymon.codeplex.com/

http://www.paessler.com/prtg/

I use PRTG and its really good, fast and stable, only downside is that you have only 10 values to measure (they call it sensors) in freeware version. Polymon is open source so there is no such restrictions.

Antonio Bakula