Samla in prestandaräknare för din Azure Cloud Service (klassisk)
Viktigt!
Cloud Services (klassisk) är nu inaktuellt för alla kunder från och med den 1 september 2024. Alla befintliga distributioner som körs stoppas och stängs av av Microsoft och data försvinner permanent från och med oktober 2024. Nya distributioner bör använda den nya Azure Resource Manager-baserade distributionsmodellen Azure Cloud Services (utökad support).
Prestandaräknare är ett sätt för dig att spåra hur bra programmet och värden presterar. Windows Server tillhandahåller många olika prestandaräknare som rör maskinvara, program, operativsystem med mera. Genom att samla in och skicka prestandaräknare till Azure kan du analysera den här informationen för att fatta bättre beslut.
Identifiera tillgängliga räknare
En prestandaräknare består av två delar, ett uppsättningsnamn (även kallat kategori) och en eller flera räknare. Du kan använda PowerShell för att hämta en lista över tillgängliga prestandaräknare:
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 ...
Egenskapen CounterSetName
representerar en uppsättning (eller kategori) och är en bra indikator på vad prestandaräknarna är relaterade till. Egenskapen Paths
representerar en samling räknare för en uppsättning. Du kan också hämta egenskapen Description
för mer information om räknaruppsättningen.
Om du vill hämta alla räknare för en uppsättning använder du CounterSetName
värdet och expanderar Paths
samlingen. Varje sökvägsobjekt är en räknare som du kan fråga. Om du till exempel vill hämta tillgängliga räknare relaterade till Processor
uppsättningen expanderar du Paths
samlingen:
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
Dessa enskilda räknare kan läggas till i diagnostikramverket som molntjänsten använder. Mer information om hur en prestandaräknares sökväg konstrueras finns i Ange en räknarsökväg.
Samla in en prestandaräknare
En prestandaräknare kan läggas till i molntjänsten för azure-diagnostik eller Application Insights.
Programinsikter
Med Azure Application Insights för Cloud Services kan du ange vilka prestandaräknare du vill samla in. När du har lagt till Application Insights i projektet läggs en konfigurationsfil med namnet ApplicationInsights.config till i ditt Visual Studio-projekt. Den här konfigurationsfilen definierar vilken typ av information Application Insights samlar in och skickar till Azure.
Öppna filen ApplicationInsights.config och leta upp elementet ApplicationInsights>TelemetryModules. Varje <Add>
underordnat element definierar en typ av telemetri som ska samlas in, tillsammans med dess konfiguration. Modultypen prestandaräknare är Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector
. Om det här elementet redan har definierats ska du inte lägga till det en andra gång. Varje prestandaräknare som ska samlas in definieras under en nod med namnet <Counters>
. Här är ett exempel som samlar in diskprestandaräknare:
<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 ... -->
Varje prestandaräknare representeras som ett <Add>
element under <Counters>
. Attributet PerformanceCounter
definierar vilken prestandaräknare som ska samlas in. Attributet ReportAs
är rubriken som ska visas i Azure Portal för prestandaräknaren. Alla prestandaräknare som du samlar in placeras i en kategori med namnet Anpassad i portalen. Till skillnad från Azure Diagnostics kan du inte ange intervallet som dessa prestandaräknare samlas in och skickas till Azure. Med Application Insights samlas prestandaräknare in och skickas varje minut.
Application Insights samlar automatiskt in följande prestandaräknare:
- \Process(?? APP_WIN32_PROC??)% processortid
- \Memory\Tillgängliga byte
- .NET CLR-undantag(?? APP_CLR_PROC??)Antal exceps som kastas/sek
- \Process(??APP_WIN32_PROC??)\Privata byte
- \Process(??APP_WIN32_PROC??)\Byte i I/O-data per sekund
- \Processor(_Total)% processortid
Mer information finns i Systemprestandaräknare i Application Insights och Application Insights för Azure Cloud Services.
Microsoft Azure Diagnostics
Viktigt!
Alla dessa data aggregeras till lagringskontot, men portalen tillhandahåller inget internt sätt att kartlägga data. Vi rekommenderar starkt att du integrerar en annan diagnostiktjänst, till exempel Application Insights, i ditt program.
Med Azure Diagnostics-tillägget för Cloud Services kan du ange vilka prestandaräknare du vill samla in. Information om hur du konfigurerar Azure Diagnostics finns i Översikt över övervakning av molntjänster.
De prestandaräknare som du vill samla in definieras i filen diagnostics.wadcfgx . Öppna den här filen i Visual Studio och leta reda på elementet DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters. Lägg till ett nytt PerformanceCounterConfiguration-element som underordnat. Det här elementet har två attribut: counterSpecifier
och sampleRate
. Attributet counterSpecifier
definierar vilken systemprestandaräknare som ska samlas in (beskrivs i föregående avsnitt). Värdet sampleRate
anger hur ofta det värdet avsöks. Som helhet överförs alla prestandaräknare till Azure enligt det överordnade PerformanceCounters
elementets scheduledTransferPeriod
attributvärde.
Mer information om PerformanceCounters
schemaelementet finns i Azure Diagnostics Schema.
Den period som definieras av sampleRate
attributet använder datatypen XML-varaktighet för att ange hur ofta prestandaräknaren avsöks. I följande exempel anges frekvensen till PT3M
, vilket innebär [P]eriod[T]ime[3][M]inutes
: var tredje minut.
Mer information om hur sampleRate
och definieras finns i avsnittet Varaktighetsdatatyp i självstudiekursen Datum- och tidstyper för scheduledTransferPeriod
W3 XML.
<?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>
Skapa en ny perf-räknare
En ny prestandaräknare kan skapas och användas av koden. Koden som skapar en ny prestandaräknare måste köras förhöjd, annars misslyckas den. Startkoden för molntjänsten OnStart
kan skapa prestandaräknaren, vilket kräver att du kör rollen i en upphöjd kontext. Eller så kan du skapa en startuppgift som körs förhöjd och skapar prestandaräknaren. Mer information om startuppgifter finns i Konfigurera och köra startuppgifter för en molntjänst.
Om du vill konfigurera din roll så att den körs förhöjd lägger du till ett <Runtime>
element i .csdef-filen .
<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>
Du kan skapa och registrera en ny prestandaräknare med några rader kod. Använd den System.Diagnostics.PerformanceCounterCategory.Create
metodöverlagring som skapar både kategorin och räknaren. Följande kod kontrollerar först om kategorin finns och skapar både kategorin och räknaren om den saknas.
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
}
}
När du vill använda räknaren anropar Increment
du metoden eller IncrementBy
.
// Increase the counter by 1
counterServiceUsed.Increment();
Nu när ditt program använder din anpassade räknare måste du konfigurera Azure Diagnostics eller Application Insights för att spåra räknaren.
Programinsikter
Som tidigare nämnts definieras prestandaräknarna för Application Insights i applicationinsights.config-filen . Öppna ApplicationInsights.config och leta reda på elementet ApplicationInsights>TelemetryModules>Add>Counters. Skapa ett underordnat <Add>
PerformanceCounter
element och ange attributet till kategorin och namnet på prestandaräknaren som du skapade i koden. Ange attributet ReportAs
till ett eget namn som du vill se i portalen.
<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 ... -->
Microsoft Azure Diagnostics
Som tidigare nämnts definieras de prestandaräknare som du vill samla in i filen diagnostics.wadcfgx . Öppna den här filen i Visual Studio och leta reda på elementet DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters. Lägg till ett nytt PerformanceCounterConfiguration-element som underordnat. counterSpecifier
Ange attributet till kategorin och namnet på prestandaräknaren som du skapade i koden.
<?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>