Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
Os Serviços na Nuvem (clássicos) foram preteridos para todos os clientes a partir de 1º de setembro de 2024. Todas as implantações em execução existentes serão interrompidas e encerradas pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. Novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido).
Os contadores de desempenho fornecem uma maneira de controlar o desempenho do seu aplicativo e do host. O Windows Server fornece muitos contadores de desempenho diferentes relacionados a hardware, aplicativos, sistema operacional e muito mais. Ao coletar e enviar contadores de desempenho para o Azure, você pode analisar essas informações para ajudar a tomar melhores decisões.
Descubra os balcões disponíveis
Um contador de desempenho é composto por duas partes, um nome de conjunto (também conhecido como categoria) e um ou mais contadores. Você pode usar o PowerShell para obter uma lista de contadores de desempenho disponíveis:
Get-Counter -ListSet * | Select-Object CounterSetName, Paths | Sort-Object CounterSetName
CounterSetName Paths
-------------- -----
.NET CLR Data {\.NET CLR Data(*)\SqlClient...
.NET CLR Exceptions {\.NET CLR Exceptions(*)\# o...
.NET CLR Interop {\.NET CLR Interop(*)\# of C...
.NET CLR Jit {\.NET CLR Jit(*)\# of Metho...
.NET Data Provider for Oracle {\.NET Data Provider for Ora...
.NET Data Provider for SqlServer {\.NET Data Provider for Sql...
.NET Memory Cache 4.0 {\.NET Memory Cache 4.0(*)\C...
AppV Client Streamed Data Percentage {\AppV Client Streamed Data ...
ASP.NET {\ASP.NET\Application Restar...
ASP.NET Apps v4.0.30319 {\ASP.NET Apps v4.0.30319(*)...
ASP.NET State Service {\ASP.NET State Service\Stat...
ASP.NET v2.0.50727 {\ASP.NET v2.0.50727\Applica...
ASP.NET v4.0.30319 {\ASP.NET v4.0.30319\Applica...
Authorization Manager Applications {\Authorization Manager Appl...
#... results cut to save space ...
A propriedade CounterSetName representa um conjunto (ou categoria) e é um bom indicador das áreas que os contadores de desempenho abrangem. A Paths propriedade representa uma coleção de contadores para um conjunto. Você também pode obter a Description propriedade para mais informações sobre o conjunto de contadores.
Para obter todos os contadores de um conjunto, use o valor CounterSetName e expanda a coleção Paths. Cada elemento de caminho é um contador que podes consultar. Por exemplo, para obter os contadores disponíveis relacionados ao Processor conjunto, expanda a Paths coleção:
Get-Counter -ListSet * | Where-Object CounterSetName -eq "Processor" | Select -ExpandProperty Paths
\Processor(*)\% Processor Time
\Processor(*)\% User Time
\Processor(*)\% Privileged Time
\Processor(*)\Interrupts/sec
\Processor(*)\% DPC Time
\Processor(*)\% Interrupt Time
\Processor(*)\DPCs Queued/sec
\Processor(*)\DPC Rate
\Processor(*)\% Idle Time
\Processor(*)\% C1 Time
\Processor(*)\% C2 Time
\Processor(*)\% C3 Time
\Processor(*)\C1 Transitions/sec
\Processor(*)\C2 Transitions/sec
\Processor(*)\C3 Transitions/sec
Esses caminhos de contador individuais podem ser adicionados à estrutura de diagnóstico usada pelo seu serviço de nuvem. Para obter mais informações sobre como um caminho de contador de desempenho é construído, consulte Especificando um caminho de contador.
Coletar um contador de desempenho
Um contador de desempenho pode ser adicionado ao seu serviço de nuvem para o Diagnóstico do Azure ou o Application Insights.
Informações sobre aplicativos
O Azure Application Insights for Cloud Services permite especificar quais contadores de desempenho você deseja coletar. Depois de adicionar o Application Insights ao seu projeto, um arquivo de configuração chamado ApplicationInsights.config é adicionado ao seu projeto do Visual Studio. Esse arquivo de configuração define que tipo de informações o Application Insights coleta e envia para o Azure.
Abra o arquivo ApplicationInsights.config e localize o elemento ApplicationInsights>TelemetryModules. Cada <Add> elemento filho define um tipo de telemetria a ser recolhida, juntamente com a sua configuração. O tipo de módulo de telemetria do contador de desempenho é Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector. Se esse elemento já estiver definido, não o adicione uma segunda vez. Cada contador de desempenho a ser coletado é definido sob um nó chamado <Counters>. Eis um exemplo que recolhe contadores de desempenho da unidade:
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
<Counters>
<Add PerformanceCounter="\LogicalDisk(C:)\Disk Write Bytes/sec" ReportAs="Disk write (C:)" />
<Add PerformanceCounter="\LogicalDisk(C:)\Disk Read Bytes/sec" ReportAs="Disk read (C:)" />
</Counters>
</Add>
</TelemetryModules>
<!-- ... cut to save space ... -->
Cada contador de desempenho é representado como um <Add> elemento em <Counters>. O PerformanceCounter atributo define qual contador de desempenho coletar. O ReportAs atributo é o título a ser exibido no portal do Azure para o contador de desempenho. Qualquer contador de desempenho coletado é colocado em uma categoria chamada Personalizado no portal. Ao contrário do Diagnóstico do Azure, você não pode definir o intervalo em que esses contadores de desempenho são coletados e enviados para o Azure. Com o Application Insights, os contadores de desempenho são coletados e enviados a cada minuto.
O Application Insights coleta automaticamente os seguintes contadores de desempenho:
- \Processo(??APP_WIN32_PROC??)% Tempo do Processador
- \Memória\Bytes Disponíveis
- Exceções CLR do .NET (??APP_CLR_PROC??) # de Exceções Lançadas / seg
- \Process(??APP_WIN32_PROC??)\Private Bytes
- \Processo(??APP_WIN32_PROC??)\Bytes de Dados de E/S/seg
- \Processador(_Total)% Tempo do processador
Para obter mais informações, consulte Contadores de desempenho do sistema em Application Insights e Application Insights for Azure Cloud Services.
Azure Diagnostics
Importante
Embora todos esses dados sejam agregados à conta de armazenamento, o portal não fornece uma maneira nativa de mapear os dados. É altamente recomendável que você integre outro serviço de diagnóstico, como o Application Insights, em seu aplicativo.
A extensão de Diagnóstico do Azure para Serviços de Nuvem permite especificar quais contadores de desempenho você deseja coletar. Para configurar o Diagnóstico do Azure, consulte Visão geral do monitoramento do serviço de nuvem.
Os contadores de desempenho que você deseja coletar são definidos no arquivo diagnostics.wadcfgx . Abra este ficheiro no Visual Studio e localize o elemento DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters. Adicione um novo elemento PerformanceCounterConfiguration como subelemento. Este elemento tem dois atributos: counterSpecifier e sampleRate. O counterSpecifier atributo define qual conjunto de contadores de desempenho do sistema (descrito na seção anterior) deve ser coletado. O sampleRate valor indica a frequência com que esse valor é pesquisado. Como um todo, todos os contadores de desempenho são transferidos para o Azure de acordo com o valor do atributo scheduledTransferPeriod do elemento pai PerformanceCounters.
Para obter mais informações sobre o PerformanceCounters elemento de esquema, consulte o Esquema de Diagnóstico do Azure.
O período definido pelo sampleRate atributo usa o tipo de dados de duração XML para indicar com que frequência o contador de desempenho é sondado. No exemplo a seguir, a taxa é definida como PT3M, o que significa [P]eriod[T]ime[3][M]inutes: a cada três minutos.
Para obter mais informações sobre como os sampleRate e scheduledTransferPeriod são definidos, consulte a seção Tipo de dados de Duração no tutorial Tipos de Data e Hora XML W3.
<?xml version="1.0" encoding="utf-8"?>
<DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<PublicConfig>
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096">
<!-- ... cut to save space ... -->
<PerformanceCounters scheduledTransferPeriod="PT1M">
<PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\ISAPI Extension Requests/sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Bytes Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Requests/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Errors Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Queued" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Rejected" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
<!-- This is a new perf counter which will track the C: disk read activity in bytes per second, every minute -->
<PerformanceCounterConfiguration counterSpecifier="\LogicalDisk(C:)\Disk Read Bytes/sec" sampleRate="PT1M" />
</PerformanceCounters>
</DiagnosticMonitorConfiguration>
</WadCfg>
<!-- ... cut to save space ... -->
</PublicConfig>
</DiagnosticsConfiguration>
Criar um novo contador de desempenho
Um novo contador de desempenho pode ser criado e usado pelo seu código. Seu código que cria um novo contador de desempenho deve estar sendo executado elevado, caso contrário, ele falhará. O código de inicialização do serviço de OnStart nuvem pode criar o contador de desempenho, exigindo que você execute a função em um contexto elevado. Ou podes criar uma tarefa de inicialização que é executada com privilégios elevados e cria um contador de desempenho. Para obter mais informações sobre tarefas de inicialização, consulte Como configurar e executar tarefas de inicialização para um serviço de nuvem.
Para configurar a sua função para executar com privilégios elevados, adicione um elemento <Runtime> para o arquivo .csdef.
<ServiceDefinition name="CloudServiceLoadTesting" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WorkerRole name="WorkerRoleWithSBQueue1" vmsize="Large">
<!-- ... cut to save space ... -->
<Runtime executionContext="elevated">
</Runtime>
<!-- ... cut to save space ... -->
</WorkerRole>
</ServiceDefinition>
Você pode criar e registrar um novo contador de desempenho com algumas linhas de código. Utilize o método de sobrecarga System.Diagnostics.PerformanceCounterCategory.Create que cria a categoria e o contador. O código a seguir primeiro verifica se a categoria existe e, se faltar, cria a categoria e o contador.
using System.Diagnostics;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.ServiceRuntime;
namespace WorkerRoleWithSBQueue1
{
public class WorkerRole : RoleEntryPoint
{
// Perf counter variable representing times service was used.
private PerformanceCounter counterServiceUsed;
public override bool OnStart()
{
// ... Other startup code here ...
// Define the category and counter names.
string perfCounterCatName = "MyService";
string perfCounterName = "Times Used";
// Create the counter if needed. Our counter category only has a single counter.
// Both the category and counter are created in the same method call.
if (!PerformanceCounterCategory.Exists(perfCounterCatName))
{
PerformanceCounterCategory.Create(perfCounterCatName, "Collects information about the cloud service.",
PerformanceCounterCategoryType.SingleInstance,
perfCounterName, "How many times the cloud service was used.");
}
// Get reference to our counter
counterServiceUsed = new PerformanceCounter(perfCounterCatName, perfCounterName);
counterServiceUsed.ReadOnly = false;
return base.OnStart();
}
// ... cut class code to save space
}
}
Quando quiser usar o contador, chame o Increment método ou IncrementBy .
// Increase the counter by 1
counterServiceUsed.Increment();
Agora que seu aplicativo usa seu contador personalizado, você precisa configurar o Diagnóstico do Azure ou o Application Insights para acompanhar o contador.
Informações sobre aplicativos
Como dito anteriormente, os contadores de desempenho do Application Insights são definidos no arquivo ApplicationInsights.config . Abra ApplicationInsights.config e localize o ApplicationInsights>TelemetryModules>Add>Counters elemento. Crie um elemento filho <Add> e defina o atributo PerformanceCounter para a categoria e o nome do contador de desempenho que criou no seu código. Defina o ReportAs atributo para um nome amigável que você deseja ver no portal.
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
<Counters>
<!-- ... cut other perf counters to save space ... -->
<!-- This new perf counter matches the [category name]\[counter name] defined in your code -->
<Add PerformanceCounter="\MyService\Times Used" ReportAs="Service used counter" />
</Counters>
</Add>
</TelemetryModules>
<!-- ... cut to save space ... -->
Azure Diagnostics
Como dito anteriormente, os contadores de desempenho que você deseja coletar são definidos no arquivo diagnostics.wadcfgx . Abra este ficheiro no Visual Studio e localize o elemento DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters. Adicione um novo elemento PerformanceCounterConfiguration como subelemento. Defina o counterSpecifier atributo para a categoria e o nome do contador de desempenho que você criou em seu código.
<?xml version="1.0" encoding="utf-8"?>
<DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<PublicConfig>
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096">
<!-- ... cut to save space ... -->
<PerformanceCounters scheduledTransferPeriod="PT1M">
<!-- ... cut other perf counters to save space ... -->
<!-- This new perf counter matches the [category name]\[counter name] defined in your code -->
<PerformanceCounterConfiguration counterSpecifier="\MyService\Times Used" sampleRate="PT1M" />
</PerformanceCounters>
</DiagnosticMonitorConfiguration>
</WadCfg>
<!-- ... cut to save space ... -->
</PublicConfig>
</DiagnosticsConfiguration>