Megosztás a következőn keresztül:


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 PT3Mvan á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>

Következő lépések