Teljesítményszámlálók gyűjtése az Azure Cloud Service-hez (klasszikus)
Fontos
A Cloud Services (klasszikus) 2024. szeptember 1-étől minden ügyfél számára elavult. A Microsoft leállítja és leállítja a meglévő üzemelő példányokat, és 2024 októberétől folyamatosan elvesznek az adatok. Az új üzemelő példányoknak az Azure Cloud Services új Azure Resource Manager-alapú üzemi modelljét (kiterjesztett támogatás) kell használniuk.
A teljesítményszámlálók segítségével nyomon követheti az alkalmazás és a gazdagép teljesítményét. A Windows Server számos különböző teljesítményszámlálót biztosít a hardverhez, az alkalmazásokhoz, az operációs rendszerhez és egyebekhez. A teljesítményszámlálók Azure-ba történő gyűjtésével és elküldésével elemezheti ezeket az információkat, hogy jobb döntéseket hozzon.
Elérhető számlálók felderítése
A teljesítményszámláló két részből, egy készletnévből (más néven kategória) és egy vagy több számlálóból áll. A PowerShell használatával lekérheti az elérhető teljesítményszámlálók listáját:
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 CounterSetName
tulajdonság egy halmazt (vagy kategóriát) jelöl, és jó mutatója annak, hogy a teljesítményszámlálók mihez kapcsolódnak. A Paths
tulajdonság egy készlet számlálóinak gyűjteményét jelöli. A számlálókészlettel kapcsolatos további információkért a tulajdonságot is lekérheti Description
.
A készlet összes számlálójának lekéréséhez használja az CounterSetName
értéket, és bontsa ki a gyűjteményt Paths
. Minden elérésiút-elem egy lekérdezhető számláló. A készlethez kapcsolódó elérhető számlálók lekéréséhez Processor
például bontsa ki a gyűjteményt Paths
:
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
Ezek az egyéni számlálóútvonalak hozzáadhatók a felhőszolgáltatás által használt diagnosztikai keretrendszerhez. A teljesítményszámláló elérési útjának felépítéséről további információt a Számláló elérési útjának megadása című témakörben talál.
Teljesítményszámláló összegyűjtése
A felhőszolgáltatáshoz teljesítményszámlálót adhat az Azure Diagnosticshoz vagy az Application Insightshoz.
Application Insights
Azure-alkalmazás Cloud Services-elemzésekkel megadhatja, hogy milyen teljesítményszámlálókat szeretne gyűjteni. Miután hozzáadta az Application Insightst a projekthez, egy ApplicationInsights.config nevű konfigurációs fájl lesz hozzáadva a Visual Studio-projekthez. Ez a konfigurációs fájl határozza meg, hogy az Application Insights milyen típusú információkat gyűjt és küld az Azure-ba.
Nyissa meg az ApplicationInsights.config fájlt, és keresse meg az ApplicationInsights>TelemetryModules elemet. Minden <Add>
gyermekelem meghatároz egy gyűjtendő telemetriai típust a konfigurációjával együtt. A teljesítményszámláló telemetriai modul típusa.Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector
Ha ez az elem már definiálva van, ne adja hozzá másodszor. Minden összegyűjtendő teljesítményszámláló egy nevű csomópont alatt van definiálva <Counters>
. Íme egy példa a meghajtó teljesítményszámlálóinak gyűjtésére:
<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 ... -->
Minden teljesítményszámláló elemként <Add>
jelenik meg a () alatt <Counters>
. Az PerformanceCounter
attribútum határozza meg, hogy melyik teljesítményszámlálót kell összegyűjteni. Az ReportAs
attribútum a teljesítményszámláló Azure Portalon megjelenítendő címe. Az összegyűjtött teljesítményszámlálók egy Egyéni nevű kategóriába kerülnek a portálon. Az Azure Diagnosticstól eltérően nem állíthatja be, hogy a rendszer ezeket a teljesítményszámlálókat gyűjtse össze és küldje el az Azure-ba. Az Application Insights segítségével a teljesítményszámlálókat percenként gyűjtjük és küldjük el.
Az Application Insights automatikusan a következő teljesítményszámlálókat gyűjti:
- \Folyamat(?? APP_WIN32_PROC?) Processzoridő %-a
- \Memory\Available Bytes
- .NET CLR-kivételek(?? APP_CLR_PROC?) Az Exceps Thrown száma / mp
- \Process(??APP_WIN32_PROC??)\Private Bytes
- \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
- \Processzor(_Total)% processzoridő
További információ: Rendszerteljesítmény-számlálók az Application Insightsban és az Application Insights for Azure Cloud Servicesben.
Azure Diagnostics
Fontos
Bár az összes adat a tárfiókba van összesítve, a portál nem biztosít natív módot az adatok diagramozására. Javasoljuk, hogy integráljon egy másik diagnosztikai szolgáltatást, például az Application Insightst az alkalmazásba.
A Cloud Services Azure Diagnostics bővítményével megadhatja, hogy milyen teljesítményszámlálókat szeretne gyűjteni. Az Azure Diagnostics beállításához tekintse meg a felhőszolgáltatás monitorozásának áttekintését.
A gyűjtendő teljesítményszámlálókat a diagnostics.wadcfgx fájl határozza meg. Nyissa meg ezt a fájlt a Visual Studióban, és keresse meg a DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters elemet. Adjon hozzá egy új PerformanceCounterConfiguration elemet gyermekként. Ez az elem két attribútummal rendelkezik: counterSpecifier
és sampleRate
. Az counterSpecifier
attribútum határozza meg, hogy mely rendszerteljesítmény-számlálókészletet (az előző szakaszban vázolta fel) gyűjtse össze. Az sampleRate
érték azt jelzi, hogy milyen gyakran kérdezik le az értéket. A rendszer az összes teljesítményszámlálót a szülőelem PerformanceCounters
attribútumértékének scheduledTransferPeriod
megfelelően továbbítja az Azure-ba.
A sémaelemről további PerformanceCounters
információt az Azure Diagnostics-sémában talál.
Az attribútum által sampleRate
meghatározott időszak az XML-időtartam adattípusával jelzi a teljesítményszámláló lekérdezésének gyakoriságát. A következő példában a ráta a következőre PT3M
van állítva, ami azt jelenti [P]eriod[T]ime[3][M]inutes
: három percenként.
A definiálás módjával sampleRate
scheduledTransferPeriod
kapcsolatos további információkért tekintse meg a W3 XML Dátum- és idődátumtípusok oktatóanyagának Időtartam adattípus szakaszát.
<?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>
Új perf számláló létrehozása
A kód egy új teljesítményszámlálót hozhat létre és használhat. Az új teljesítményszámlálót létrehozó kódnak emelt szintűnek kell futnia, ellenkező esetben sikertelen. A felhőszolgáltatás OnStart
indítási kódja létrehozhatja a teljesítményszámlálót, amely megköveteli, hogy emelt szintű környezetben futtassa a szerepkört. Létrehozhat egy emelt szintű futtatású indítási feladatot, és létrehozhatja a teljesítményszámlálót. Az indítási feladatokkal kapcsolatos további információkért tekintse meg az indítási feladatok felhőszolgáltatáshoz való konfigurálását és futtatását ismertető témakört.
Ha a szerepkört emelt szintű futtatásra szeretné konfigurálni, adjon hozzá egy <Runtime>
elemet a .csdef fájlhoz.
<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>
Létrehozhat és regisztrálhat egy új teljesítményszámlálót néhány sornyi kóddal. Használja a kategóriát System.Diagnostics.PerformanceCounterCategory.Create
és a számlálót is létrehozó metódust. Az alábbi kód először ellenőrzi, hogy létezik-e a kategória, és ha hiányzik, akkor a kategória és a számláló is létrejön.
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
}
}
Ha a számlálót szeretné használni, hívja meg a metódustIncrement
.IncrementBy
// Increase the counter by 1
counterServiceUsed.Increment();
Most, hogy az alkalmazás az egyéni számlálót használja, konfigurálnia kell az Azure Diagnosticst vagy az Application Insightst a számláló nyomon követéséhez.
Application Insights
Ahogy korábban említettem, az Application Insights teljesítményszámlálói az ApplicationInsights.config fájlban vannak definiálva . Nyissa meg az ApplicationInsights.config fájlt, és keresse meg az ApplicationInsights>TelemetriaiModules>Számlálók hozzáadása>elemet. Hozzon létre egy <Add>
gyermekelemet, és állítsa az PerformanceCounter
attribútumot a kódban létrehozott teljesítményszámláló kategóriájára és nevére. Állítsa be az ReportAs
attribútumot egy felhasználóbarát névre, amelyet látni szeretne a portálon.
<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
Ahogy korábban említettük, a gyűjtendő teljesítményszámlálók a diagnostics.wadcfgx fájlban vannak definiálva. Nyissa meg ezt a fájlt a Visual Studióban, és keresse meg a DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters elemet. Adjon hozzá egy új PerformanceCounterConfiguration elemet gyermekként. Állítsa be az counterSpecifier
attribútumot a kódban létrehozott teljesítményszámláló kategóriájára és nevére.
<?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>