Windows Performance Monitor is a pretty good bet. It will embed itself as an ActiveX control into a web page, so you can just open it up, and its counters can monitor pretty much every aspect of the server (just as long as it can be represented numerically).
You can monitor remote servers, as as long as the account it’s running on has admin privileges over them.
The counters we generally run for visual reference are:
- ASP.net Applications Running
- ASP.net Requests Wait Time
- Processor % Processor Time
- PhysicalDisk Avg. Disk Queue Length
- Memory Avaliable MBytes
There are a bunch of SQL based metrics (wait time, queries per second, avg query run time, etc) that I don’t have handy on me right now but it’s pretty flexible in its reporting. Same with ASP.net – you can have it report on individual applications, or use the _total counter for all of them.
Look at using SQL Server Profiler and Windows Server performance monitor traces together. SQL Server 2005 allows you to co-relate these two files together. This article describes how to do this well.
In addition to this, If you use the application name= parameter in your SQL Server connection string you can capture this in the Profiler trace & use this as a way of passing information from your asp.net/asp application like what filename is being executed.
You could try commercial tools like BMC AppSight, or if it’s .Net based only, AVICode.
If you’re looking to do this on the cheap, a combination of IIS logs and Perfmon counters would cover your needs.