Contadores de desempenho do sistema no Application Insights
O Windows fornece uma variedade de contadores de desempenho, como os usados para coletar estatísticas de uso de processador, memória e disco. Também é possível definir contadores de desempenho próprios.
Há suporte para coleção de contadores de desempenho se o aplicativo está em execução no IIS em um host local ou é uma máquina virtual à qual você tem acesso administrativo. Embora os aplicativos executados como Aplicativos Web do Azure não tenham acesso direto aos contadores de desempenho, um subconjunto de contadores disponíveis é coletado pelo Application Insights.
Observação
A documentação a seguir depende da API clássica do Application Insights. O plano de longo prazo do Application Insights é coletar dados usando o OpenTelemetry. Para obter mais informações, confira Habilitar o OpenTelemetry do Azure Monitor para aplicativos .NET, Node.js, Python e Java e o nosso Roteiro do OpenTelemetry. As diretrizes de migração estão disponíveis para .NET, Node.js e Python.
Pré-requisitos
Conceda à conta de serviço do pool de aplicativos permissão para monitorar os contadores de desempenho adicionando-a ao grupo Usuários do Monitor de Desempenho.
net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"
Visualizar contadores
O painel Métricas mostra o conjunto padrão de contadores de desempenho.
Contadores padrão atuais para aplicativos Web ASP.NET:
- % Processo\Tempo do processador
- % Processo\Tempo do processador normalizado
- Memória\Bytes disponíveis
- Solicitações de ASP.NET/segundo
- Exceções .NET CLR lançadas/segundo
- Tempo de execução de solicitação de aplicativos ASP.NET
- Processo\Bytes Particulares
- Processo\Bytes de dados de E/S/segundo
- Aplicativos ASP.NET\Solicitações em Fila de Aplicativos
- Processor(_Total)\% Processor Time
Contadores padrão atuais coletados para aplicativos Web ASP.NET Core:
- % Processo\Tempo do processador
- % Processo\Tempo do processador normalizado
- Memória\Bytes disponíveis
- Processo\Bytes Particulares
- Processo\Bytes de dados de E/S/segundo
- Processor(_Total)\% Processor Time
Adicionar contadores
Se o contador de desempenho desejado não estiver incluído na lista de métricas, você poderá adicioná-lo.
Descubra quais contadores estão disponíveis no servidor usando este comando do PowerShell no servidor local:
Get-Counter -ListSet *
Para obter mais informações, consulte
Get-Counter
.Abra o
ApplicationInsights.config
.Se você adicionou o Application Insights ao seu aplicativo durante o desenvolvimento:
- Edite
ApplicationInsights.config
no projeto. - Reimplante-o em seus servidores.
- Edite
Edite a diretiva do coletor de desempenho:
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector"> <Counters> <Add PerformanceCounter="\Objects\Processes"/> <Add PerformanceCounter="\Sales(photo)\# Items Sold" ReportAs="Photo sales"/> </Counters> </Add>
Observação
Aplicativos ASP.NET Core não têm ApplicationInsights.config
, portanto, o método anterior não é válido para eles.
É possível capturar contadores padrão e os contadores que você implementou por conta própria. \Objects\Processes
é um exemplo de um contador padrão, disponível em todos os sistemas Windows. \Sales(photo)\# Items Sold
é um exemplo de um contador personalizado que pode ser implementado em um serviço Web.
O formato é \Category(instance)\Counter
, ou apenas \Category\Counter
para categorias que não têm instâncias.
O parâmetro ReportAs
é necessário para nomes de contador que não correspondem a [a-zA-Z()/-_ \.]+
. Ou seja, eles contêm caracteres que não estão nos seguintes conjuntos: letras, colchetes, barra invertida, hífen, sublinhado, espaço e ponto.
Se você especificar uma instância, ela será coletada como uma dimensão CounterInstanceName
da métrica reportada.
Coletar contadores de desempenho em código para aplicativos Web ASP.NET ou aplicativos de console do .NET/.NET Core
Para coletar contadores de desempenho do sistema e enviá-los ao Application Insights, você pode adaptar o seguinte snippet:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Ou você pode fazer a mesma coisa com métricas personalizadas que você criou:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Sales(photo)\# Items Sold", "Photo sales"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Coletar contadores de desempenho no código para aplicativos Web ASP.NET Core
Configure PerformanceCollectorModule
após o método WebApplication.CreateBuilder()
em Program.cs
:
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationInsightsTelemetry();
// The following configures PerformanceCollectorModule.
builder.Services.ConfigureTelemetryModule<PerformanceCollectorModule>((module, o) =>
{
// The application process name could be "dotnet" for ASP.NET Core self-hosted applications.
module.Counters.Add(new PerformanceCounterCollectionRequest(@"\Process([replace-with-application-process-name])\Page Faults/sec", "DotnetPageFaultsPerfSec"));
});
var app = builder.Build();
Contadores de desempenho no Log Analytics
Você pode pesquisar e exibir relatórios do contador de desempenho no Log Analytics.
O esquema performanceCounters expõe o nome category
, counter
e o nome instance
de cada contador de desempenho. Na telemetria de cada aplicativo, você verá apenas os contadores para aquele aplicativo. Por exemplo, para ver quais contadores estão disponíveis:
Aqui, Instance
se refere à instância do contador de desempenho, e não à instância do computador do servidor ou da função. O nome da instância do contador de desempenho normalmente segmenta os contadores, como tempo de processador, pelo nome do processo ou aplicativo.
Para obter um gráfico da memória disponível no período recente:
Como outras telemetrias, o performanceCounters também tem uma coluna cloud_RoleInstance
que indica a identidade da instância do servidor host no qual seu aplicativo está sendo executado. Por exemplo, para comparar o desempenho do seu aplicativo em diferentes computadores:
Contadores do ASP.NET e do Application Insights
As próximas seções discutem ASP.NET e contagens do Application Insights.
Qual é a diferença entre a Taxa de exceções e as Métricas de exceções?
Exception rate
: a taxa de exceções é um contador de desempenho do sistema. O CLR conta todas as exceções tratadas e sem tratamento que são lançadas, e divide o total em um intervalo de amostragem pela duração do intervalo. O SDK do Application Insights coleta esse resultado e o envia para o portal.Exceptions
: a métrica Exceções é uma contagem dos relatóriosTrackException
recebidos pelo portal no intervalo de amostragem do gráfico. Inclui apenas as exceções tratadas em que você escreveu chamadasTrackException
em seu código. Não inclui todas as exceções sem tratamento.
Contadores de desempenho para aplicativos em execução nos Aplicativos Web do Azure e Contêineres do Windows no Serviço de Aplicativo do Azure
Os aplicativos ASP.NET e ASP.NET Core implantados nos aplicativos Web do Azure são executados em um ambiente de área restrita especial. Os aplicativos implantados no Serviço de Aplicativo do Azure podem utilizar um contêiner de Windows ou ser hospedados em um ambiente de área restrita. Se o aplicativo for implantado em um Contêiner do Windows, todos os contadores de desempenho padrão estarão disponíveis na imagem de contêiner.
O ambiente de área restrita não permite acesso direto aos contadores de desempenho do sistema. No entanto, um subconjunto limitado de contadores é exposto como variáveis de ambiente, conforme descrito em Contadores Perf expostos como variáveis de ambiente. Só um subconjunto de contadores está disponível nesse ambiente. Para obter a lista completa, confira Contadores perf expostos como variáveis de ambiente.
O SDK do Application Insights para ASP.NET e ASP.NET Core detecta se o código é implantado em um aplicativo Web e em um contêiner não Windows. A detecção determina se eles vão coletar contadores de desempenho em um ambiente de área restrita ou usando o mecanismo de coleta padrão quando hospedados em um contêiner ou máquina virtual do Windows.
Contadores de desempenho em aplicativos do ASP.Net Core
O suporte para contadores de desempenho no ASP.Net Core é limitado:
- As versões 2.4.1 e posteriores do SDK coletarão contadores de desempenho se o aplicativo estiver sendo executado em aplicativos Web do Azure (Windows).
- As versões 2.7.1 e posteriores do SDK coletarão contadores de desempenho se o aplicativo estiver sendo executado no Windows e se destinar a
NETSTANDARD2.0
ou posterior. - Para aplicativos destinados a .NET Framework, todas as versões do SDK dão suporte a contadores de desempenho.
- As versões 2.8.0 e posteriores dão suporte ao contador de CPU/memória no Linux. Nenhum outro contador tem suporte no Linux. Para obter contadores do sistema no Linux (e em outros ambientes não Windows), use EventCounters.
Alertas
Assim como ocorre com outras métricas, você pode definir um alerta para avisar se um contador de desempenho fica fora de um limite especificado. Para definir um alerta, abra o painel Alertas e selecione Adicionar Alerta.