We want to gather performance data about our (say 80% WinApp) application, both internally in dev, as well as out at customer sites. Our objectives are the following:
- It should be very fast
- It should be lightweight
- It should allow for tracking/timing & counting many different kinds of events across our apps.
- It should be able to gather (efficiently) a fair amount of data such as Domain, ComputerName, User, OS, Memory, Etc.
- All data collected should be analyzable (once it's been transmitted to our in-house BI database) across all of the dimensions mentioned above.
It would also, ideally, be relatively configurable on a site-wide or user-by-user basis to control:
- If these performance metrics are even collected
- How verbosely to collect them
- Whether to report the results back to us
We have been planning to essentially write our own system for doing most of this. We are then looking at a number of different "persistence" models, including the Binary Formatting of "performance packets", XmlSerialization and the Trace Logging functionality that is already part of the .NET framework, just to name a few.
Before engaging in this though, I wanted to double check to see what recommendations "the crowd" suggests. I've described what we are trying to do, and essentially our current plan of action - but I'm looking for any and all suggestions about how to best solve the problem at hand.
Thanks in advance.