Guia Prático de Monitoramento com dotnet-counters para Aplicações .NET

O dotnet-counters é uma ferramenta de diagnóstico essencial para engenheiros de software que trabalham com .NET. Ele permite o monitoramento de desempenho em tempo real através da API EventCounter, sendo ideal para análises preliminares de saúde da aplicação e investigação de gargalos de performance. Com ele, é possível observar métricas como uso de CPU, taxas de exceção e comportamento do Garbage Collector (GC) sem impacto significativo no processo monitorado.

Instalação e Configuração

A ferramenta é distribuída como um pacote NuGet e pode ser instalada globalmente utilizando a interface de linha de comando (CLI) do .NET:

dotnet tool install --global dotnet-counters

Para garantir a compatibilidade, verifique as versões do SDK instaladas no ambiente antes de prosseguir:

dotnet --list-sdks

Se for necessário instalar uma versão específica para corresponder ao seu ambiente de desenvolvimento, utilize o parâmetro --version:

dotnet tool install --global dotnet-counters --version 6.0.300

Comandos Fundamentais

O funcionamento da ferramenta gira em torno de quatro comandos principais que estruturam o fluxo de trabalho de diagnóstico:

  • ps: Lista todos os processos .NET que estão em execução atualmente no sistema.
  • list: Exibe uma lista detalhada de contadores disponíveis, organizados por provedor, com suas respectivas descrições.
  • monitor: Exibe valores de contadores selecionados em tempo real, atualizando-os periodicamente no console.
  • collect: Coleta dados de métricas e os exporta para um arquivo (CSV ou JSON) para aálise histórica posterior.

Identificação e Monitoramento de Processos

O primeiro passo para o diagnóstico é identificar o Process ID (PID) da aplicação alvo. Utiliza-se o comando ps para listar os processos ativos:

dotnet-counters ps

Após obter o PID (por exemplo, 4852), inicie o monitoramento contínuo. O comando abaixo enicia a observação do processo, atualizando os dados a cada segundo:

dotnet-counters monitor --process-id 4852 --refresh-interval 1

Aálise de Métricas de Runtime

Por padrão, ao executar o monitor sem filtros, métricas do namespace System.Runtime são exibidas. Estas métricas fornecem uma visão geral do estado da aplicação, incluindo gerenciamento de memória e processamento:

[System.Runtime]
    % Time in GC since last GC (%)                     0
    Allocation Rate (B / 1 sec)                   82,100
    CPU Usage (%)                                      5
    Exception Count (Count / 1 sec)                    0
    GC Heap Size (MB)                                 45
    Gen 0 GC Count (Count / 1 sec)                     2
    ThreadPool Thread Count                           12
    Working Set (MB)                                 128

Indicadores como GC Heap Size e Allocation Rate são cruciais para identificar vazamentos de memória ou pressão excessiva sobre o coletor de lixo.

Monitoramento Específico para Aplicações Web

Para serviços ASP.NET Core, é possível filtrar apenas os contadores relevantes para o contexto web, como taxas de requisição. O exemplo abaixo monitora o provedor Microsoft.AspNetCore.Hosting para o PID 7421:

dotnet-counters monitor -p 7421 --refresh-interval 1 --counters Microsoft.AspNetCore.Hosting

O resultado apresentado foca exclusivamente na saúde do servidor web:

[Microsoft.AspNetCore.Hosting]
    Current Requests                   12
    Failed Requests                     0
    Request Rate (Count / 1 sec)       55
    Total Requests                   1050

Este filtro permite uma leitura rápida da capacidade de processamento e falhas de requisição em ambientes de produção.

Tags: dotnet-counters .NET CLI diagnóstico de desempenho EventCounter ASP.NET Core

Publicado em 8-31 05:07