Nota: Esta resposta é centrada em .NET, porque é o que eu acho que é mais comumente usado na pilha Microsoft.
Estatísticas da CPU / memória são por processo de trabalho. Portanto, se você deseja obter informações por site, sua primeira etapa será separar cada site em seu próprio processo de trabalho (pool de aplicativos).
Quando isso estiver concluído, você poderá obter estatísticas por processo simplesmente abrindo o gerenciador de tarefas. Se você estiver no Windows 2003, eles serão chamados de w3wp.exe. Vista aberta - > colunas e marque PID para mostrar PIDs para cada processo. Em seguida, abra um prompt de comando e execute "iisapp" para mapear os PIDs aos nomes do App Pool.
O perfmon (start- > run- > perfmon) expõe muitas informações boas, mas não é necessariamente fácil de acessar.
Existem milhões de pacotes de monitoramento diferentes que podem ler as informações do perfmon remotamente e acionar alertas quando os limites são atingidos. Qualquer coisa, desde o Systems Center Operations Manager da Microsoft até o What's Up Gold, para liberar ferramentas como o Nagios.
A coisa a lembrar com os dados do perfmon é que os contadores estão no nível do SO e do framework. Assim, você pode coletar algumas boas informações sobre alguns dos seus processos de trabalho e os estados do .NET.
A resposta à sua pergunta específica pode ser encontrada no provedor de dados .NET para o objeto do servidor SQL. Fique de olho nas contagens do pool de conexões do seu aplicativo.
Se você está tendo um problema de desempenho e deseja capturar dados de um processo em execução, dê uma olhada no IIS DebugDiag. Isso permitirá que você crie um arquivo dmp de memória quando certas condições forem atendidas, e ainda tenha alguns analisadores fixos que resolverão automaticamente problemas comuns. Observe que fora da caixa DebugDiag tem principalmente informações sobre código nativo (leia-se: não gerenciado). Se você estiver usando o .NET e executando problemas de memória, consulte o script do DebessDiag, que fará algumas análises de memória centrada no .NET em arquivos DMG. Debug Diag Script de memória .NET
O problema é que, se você está procurando por métricas reais sobre quanto tempo um método específico está sendo executado, esse tipo de informação não está realmente disponível sem pagar por algumas ferramentas muito agradáveis, mas muito caras. Se você tem um bom orçamento de ferramentas (leia-se: mais de 10k), recomendo o AviCode.