Bagikan melalui


Mengumpulkan penghitung kinerja untuk Azure Cloud Service (klasik) Anda

Penting

Cloud Services (klasik) sekarang tidak lagi digunakan untuk pelanggan baru dan akan dihentikan untuk semua pelanggan pada 31 Agustus 2024. Penyebaran baru sebaiknya menggunakan Azure Resource Manager yang baru berdasarkan model penyebaran Azure Cloud Services (dukungan tambahan) .

Penghitung kinerja menyediakan cara bagi Anda untuk melacak seberapa baik kinerja aplikasi Anda dan host. Windows Server menyediakan banyak penghitung kinerja berbeda yang terkait dengan perangkat keras, aplikasi, sistem operasi, dan banyak lagi. Dengan mengumpulkan dan mengirim penghitung kinerja ke Azure, Anda dapat menganalisis informasi ini untuk membantu membuat keputusan yang lebih baik.

Temukan penghitung yang tersedia

Penghitung kinerja terdiri dari dua bagian, nama yang ditetapkan (juga dikenal sebagai kategori) dan satu atau beberapa penghitung. Anda bisa menggunakan PowerShell untuk mendapatkan daftar penghitung kinerja yang tersedia:

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 ...

Properti CounterSetName mewakili satu set (atau kategori), dan merupakan indikator yang baik tentang apa yang terkait dengan penghitung kinerja. Properti Paths mewakili koleksi penghitung untuk satu set. Anda juga bisa mendapatkan properti Description untuk informasi lebih lanjut tentang set penghitung.

Untuk mendapatkan semua penghitung untuk satu set, gunakan nilai CounterSetName dan perluas koleksi Paths. Setiap item jalur adalah penghitung yang bisa Anda kueri. Misalnya, untuk mendapatkan penghitung yang tersedia yang terkait dengan set Processor, perluas koleksi 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

Jalur penghitung individual ini dapat ditambahkan ke kerangka diagnostik yang digunakan layanan awan Anda. Untuk informasi selengkapnya tentang bagaimana jalur penghitung kinerja dibuat, lihat Menentukan Jalur Penghitung.

Mengumpulkan penghitung kinerja

Penghitung kinerja dapat ditambahkan ke layanan awan Anda baik untuk Azure Diagnostics atau Application Insights.

Application Insights

Azure Application Insights for Cloud Services memungkinkan Anda menentukan penghitung kinerja apa yang ingin Anda kumpulkan. Setelah Anda menambahkan Application Insights ke proyek Anda,file konfigurasi bernama ApplicationInsights.config ditambahkan ke proyek Visual Studio Anda. File konfigurasi ini menentukan jenis informasi yang dikumpulkan dan dikirim Application Insights ke Azure.

Buka file ApplicationInsights.config dan temukan elemen ApplicationInsights>TelemetryModules. Setiap <Add> elemen-anak mendefinisikan jenis telemetri untuk dikumpulkan, bersama dengan konfigurasinya. Jenis modul telemetri penghitung kinerja adalah Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector. Jika elemen ini sudah didefinisikan, jangan tambahkan untuk kedua kalinya. Setiap penghitung kinerja untuk dikumpulkan didefinisikan di bawah node bernama <Counters>. Berikut adalah contoh yang mengumpulkan penghitung kinerja drive:

<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 ... -->

Setiap penghitung kinerja diwakili sebagai elemen <Add> di bawah <Counters>. Atribut PerformanceCounter mendefinisikan penghitung kinerja mana yang akan dikumpulkan. Atribut ReportAs adalah judul untuk ditampilkan di portal Microsoft Azure untuk penghitung kinerja. Setiap penghitung kinerja yang Anda kumpulkan dimasukkan ke dalam kategori bernama Kustom di portal. Tidak seperti Diagnostik Azure, Anda tidak dapat mengatur interval penghitung kinerja ini dikumpulkan dan dikirim ke Azure. Dengan Application Insights, penghitung kinerja dikumpulkan dan dikirim setiap menit.

Application Insights secara otomatis mengumpulkan penghitung kinerja berikut:

  • \Process(??APP_WIN32_PROC??)% Processor Time
  • \Memory\Available Bytes
  • .NET CLR Exceptions(??APP_CLR_PROC??)# of Exceps Thrown / sec
  • \Process(??APP_WIN32_PROC??)\Private Bytes
  • \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
  • \Processor(_Total)% Processor Time

Untuk informasi selengkapnya, lihat Penghitung kinerja sistem di Application Insights dan Application Insights untuk Azure Cloud Services.

Diagnostik Azure

Penting

Meskipun semua data ini dikumpulkan ke dalam akun penyimpanan, portal tidak menyediakan cara asli untuk membuat bagan data. Sangat disarankan agar Anda mengintegrasikan layanan diagnostik lain, seperti Application Insights, ke dalam aplikasi Anda.

Azure Application Insights for Cloud Services memungkinkan Anda menentukan penghitung kinerja apa yang ingin Anda kumpulkan. Untuk menyiapkan Diagnostik Azure, lihat Gambaran Umum Pemantauan Layanan Cloud.

Penghitung kinerja yang ingin Anda kumpulkan didefinisikan dalam file diagnostics.wadcfgx. Buka file ini (didefinisikan per peran) di Visual Studio dan temukan elemen DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters. Tambahkan elemen PerformanceCounterConfiguration baru sebagai anak. Elemen ini memiliki dua atribut: counterSpecifier dan sampleRate. Atribut counterSpecifier mendefinisikan set penghitung kinerja sistem mana (diuraikan di bagian sebelumnya) untuk dikumpulkan. Nilai sampleRate menunjukkan seberapa sering nilai tersebut dijajaki. Secara keseluruhan, semua penghitung kinerja ditransfer ke Azure sesuai dengan nilai atribut PerformanceCounters elemen scheduledTransferPeriod induk.

Untuk informasi selengkapnya tentang PerformanceCounterselemen skema, lihat Skema Diagnostik Azure.

Periode yang ditentukan oleh atribut sampleRate menggunakan tipe data durasi XML untuk menunjukkan seberapa sering penghitung kinerja dijajaki. Dalam contoh di bawah ini, tarif diatur ke PT3M, yang berarti [P]eriod[T]ime[3][M]inutes: setiap tiga menit.

Untuk informasi selengkapnya tentang bagaimana sampleRate dan scheduledTransferPeriod didefinisikan, lihat bagian Tipe Data Durasi di tutorial Tanggal XML W3 dan Jenis Tanggal Waktu.

<?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>

Membuat penghitung kinerja baru

Penghitung kinerja baru dapat dibuat dan digunakan oleh kode Anda. Kode Anda yang membuat penghitung kinerja baru harus berjalan ditinggikan, jika tidak, itu akan gagal. Kode pengaktifan layanan awan OnStart Anda dapat membuat penghitung kinerja, mengharuskan Anda menjalankan peran dalam konteks yang ditinggikan. Atau Anda dapat membuat tugas pengaktifan yang berjalan ditinggikan dan membuat penghitung kinerja. Untuk informasi selengkapnya tentang tugas pengaktifan, lihat Cara mengonfigurasi dan menjalankan tugas pengaktifan untuk layanan awan.

Untuk mengonfigurasi peran Anda agar berjalan ditinggikan, <Runtime> tambahkan elemen ke file .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>

Anda dapat membuat dan mendaftarkan penghitung kinerja baru dengan beberapa baris kode. Gunakan metode System.Diagnostics.PerformanceCounterCategory.Create kelebihan beban yang membuat kategori dan penghitung. Kode berikut pertama-tama memeriksa apakah kategori ada, dan jika hilang, membuat kategori dan penghitung.

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
    }
}

Saat Anda ingin menggunakan penghitung, hubungi Increment atau metode IncrementBy.

// Increase the counter by 1
counterServiceUsed.Increment();

Sekarang setelah aplikasi Anda menggunakan penghitung kustom, Anda perlu mengonfigurasi Diagnostik Azure atau Application Insights untuk melacak penghitung.

Application Insights

Seperti yang dinyatakan sebelumnya, penghitung kinerja untuk Application Insights didefinisikan dalam file ApplicationInsights.config. Buka ApplicationInsights.config dan temukan elemen applicationInsights>TelemetryModules>Tambahkan>Counters. Buat elemen anak <Add> dan atur atribut PerformanceCounter ke kategori dan nama penghitung kinerja yang Anda buat di kode Anda. Atur atribut ReportAs ke nama bersahabat yang ingin Anda lihat di 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 ... -->

Diagnostik Azure

Seperti yang dinyatakan sebelumnya, penghitung kinerja yang ingin Anda kumpulkan didefinisikan dalam file diagnostics.wadcfgx. Buka file ini (didefinisikan per peran) di Visual Studio dan temukan elemen DiagnosticsConfiguration>PublicConfig>WadCfg>DiagnosticMonitorConfiguration>PerformanceCounters. Tambahkan elemen PerformanceCounterConfiguration baru sebagai anak. Atur atribut counterSpecifier ke kategori dan nama penghitung kinerja yang Anda telah buat di kode Anda.

<?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>

Informasi selengkapnya