Mengaktifkan Diagnostik Azure di Azure Cloud Services (klasik)

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

Lihat Gambaran Umum Diagnostik Azure untuk latar belakang Diagnostik Azure.

Cara Mengaktifkan Diagnostik dalam Peran Pekerja

Penelusuran ini menjelaskan cara menerapkan peran pekerja Azure yang memengeluarkan data telemetri menggunakan kelas .NET EventSource. Diagnostik Azure digunakan untuk mengumpulkan data telemetri dan menyimpannya di akun penyimpanan Azure. Saat membuat peran pekerja, Visual Studio secara otomatis mengaktifkan Diagnostik 1.0 sebagai bagian dari solusi di Azure SDK untuk .NET 2.4 dan yang lebih lama. Instruksi berikut menjelaskan proses untuk membuat peran pekerja, menonaktifkan Diagnostik 1.0 dari solusi, dan menerapkan Diagnostik 1.2 atau 1.3 ke peran pekerja Anda.

Prasyarat

Artikel ini mengasumsikan Anda memiliki langganan Azure dan menggunakan Visual Studio dengan Azure SDK. Jika Anda tidak memiliki langganan Azure, Anda dapat mendaftar untuk Uji Coba Gratis. Pastikan untuk Menginstal dan mengonfigurasi Azure PowerShell versi 0.8.7 atau yang lebih baru.

Langkah 1: Membuat Peran Pekerja

  1. Luncurkan Visual Studio.
  2. Buat proyek Azure Cloud Service dari templat Cloud yang menargetkan .NET Framework 4.5. Beri nama proyek "WadExample" dan klik Ok.
  3. Pilih Peran Pekerja dan klik Ok. Proyek akan dibuat.
  4. Di Penjelajah Solusi, klik dua kali file properti WorkerRole1.
  5. Di tab Konfigurasi, batalkan centang Aktifkan Diagnostik untuk menonaktifkan Diagnostik 1.0 (Azure SDK 2.4 dan yang lebih lama).
  6. Buat solusi Anda untuk memverifikasi bahwa Anda tidak memiliki kesalahan.

Langkah 2: Instrumen kode Anda

Ganti konten WorkerRole.cs dengan kode berikut. Kelas SampleEventSourceWriter, diwarisi dari Kelas EventSource, menerapkan empat metode pencatatan: SendEnums, MessageMethod, SetOther, dan HighFreq. Parameter pertama untuk metode WriteEvent menentukan ID untuk setiap peristiwa. Metode Jalankan menerapkan loop tak terbatas yang memanggil setiap metode pencatatan yang diterapkan di kelas SampleEventSourceWriter setiap 10 detik.

using Microsoft.WindowsAzure.ServiceRuntime;
using System;
using System.Diagnostics;
using System.Diagnostics.Tracing;
using System.Net;
using System.Threading;

namespace WorkerRole1
{
    sealed class SampleEventSourceWriter : EventSource
    {
        public static SampleEventSourceWriter Log = new SampleEventSourceWriter();
        public void SendEnums(MyColor color, MyFlags flags) { if (IsEnabled())  WriteEvent(1, (int)color, (int)flags); }// Cast enums to int for efficient logging.
        public void MessageMethod(string Message) { if (IsEnabled())  WriteEvent(2, Message); }
        public void SetOther(bool flag, int myInt) { if (IsEnabled())  WriteEvent(3, flag, myInt); }
        public void HighFreq(int value) { if (IsEnabled()) WriteEvent(4, value); }

    }

    enum MyColor
    {
        Red,
        Blue,
        Green
    }

    [Flags]
    enum MyFlags
    {
        Flag1 = 1,
        Flag2 = 2,
        Flag3 = 4
    }

    public class WorkerRole : RoleEntryPoint
    {
        public override void Run()
        {
            // This is a sample worker implementation. Replace with your logic.
            Trace.TraceInformation("WorkerRole1 entry point called");

            int value = 0;

            while (true)
            {
                Thread.Sleep(10000);
                Trace.TraceInformation("Working");

                // Emit several events every time we go through the loop
                for (int i = 0; i < 6; i++)
                {
                    SampleEventSourceWriter.Log.SendEnums(MyColor.Blue, MyFlags.Flag2 | MyFlags.Flag3);
                }

                for (int i = 0; i < 3; i++)
                {
                    SampleEventSourceWriter.Log.MessageMethod("This is a message.");
                    SampleEventSourceWriter.Log.SetOther(true, 123456789);
                }

                if (value == int.MaxValue) value = 0;
                SampleEventSourceWriter.Log.HighFreq(value++);
            }
        }

        public override bool OnStart()
        {
            // Set the maximum number of concurrent connections
            ServicePointManager.DefaultConnectionLimit = 12;

            // For information on handling configuration changes
            // see the MSDN topic at https://go.microsoft.com/fwlink/?LinkId=166357.

            return base.OnStart();
        }
    }
}

Langkah 3: Menerapkan Peran Pekerja Anda

Peringatan

Saat Anda mengaktifkan diagnostik untuk peran yang ada, ekstensi apa pun yang telah Anda tetapkan dinonaktifkan saat paket disebarkan. Faktor itu meliputi:

  • Diagnostik Microsoft Monitoring Agent (MMA)
  • Pemantauan Microsoft Azure Security
  • Microsoft Antimalware
  • Microsoft Monitoring Agent (MMA)
  • Agen Profiler Layanan Microsoft
  • Ekstensi Domain Windows Azure
  • Ekstensi Windows Azure Diagnostics
  • Ekstensi Desktop Jarak Jauh Windows Azure
  • Pengumpul Log Windows Azure

Anda dapat mengatur ulang ekstensi melalui portal Microsoft Azure atau PowerShell setelah menyebarkan peran yang diperbarui.

  1. Terapkan peran pekerja Anda ke Azure dari dalam Visual Studio dengan memilih proyek WadExample di Penjelajah Solusi lalu Terbitkan dari menu Build.
  2. Pilih langganan Anda.
  3. Dalam dialog Pengaturan Penerbitan Microsoft Azure, pilih Buat Baru... .
  4. Dalam dialog Buat Cloud Service dan Akun Penyimpanan, masukkan Nama (misalnya, "WadExample") dan pilih wilayah atau grup afinitas.
  5. Atur Lingkungan ke Penahapan.
  6. Ubah Pengaturan yang sesuai dan klik Terbitkan.
  7. Setelah penyebaran selesai, verifikasi di portal Microsoft Azure bahwa layanan awan Anda dalam kondisi Berjalan.

Langkah 4: Membuat file konfigurasi Diagnostik Anda dan instal ekstensi

  1. Unduh definisi skema file konfigurasi publik dengan menjalankan perintah PowerShell berikut:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Tambahkan file XML ke proyek WorkerRole1 Anda dengan mengeklik kanan pada proyek WorkerRole1 dan pilih Tambahkan ->Item Baru… ->Item Visual C# ->Data ->File XML. Beri nama file "WadExample.xml".

    CloudServices_diag_add_xml

  3. Kaitkan WadConfig.xsd dengan file konfigurasi. Pastikan jendela editor WadExample.xml adalah jendela aktif. Tekan F4 untuk membuka jendela Properti. Klik properti Skema di jendela Properti. Klik pada properti Skema. Klik tombol Tambahkan… dan arahkan ke lokasi tempat Anda menyimpan file XSD dan pilih file WadConfig.xsd. Klik OK.

  4. Ganti konten file konfigurasi WadExample.xml dengan XML berikut dan simpan file. File konfigurasi ini menentukan dua penghitung kinerja yang akan untuk dikumpulkan: satu untuk pemanfaatan CPU dan satu untuk pemanfaatan memori. Kemudian konfigurasi menentukan empat peristiwa yang sesuai dengan metode di kelas SampleEventSourceWriter.

<?xml version="1.0" encoding="utf-8"?>
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
  <WadCfg>
    <DiagnosticMonitorConfiguration overallQuotaInMB="25000">
      <PerformanceCounters scheduledTransferPeriod="PT1M">
        <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT1M" unit="percent" />
        <PerformanceCounterConfiguration counterSpecifier="\Memory\Committed Bytes" sampleRate="PT1M" unit="bytes"/>
      </PerformanceCounters>
      <EtwProviders>
        <EtwEventSourceProviderConfiguration provider="SampleEventSourceWriter" scheduledTransferPeriod="PT5M">
          <Event id="1" eventDestination="EnumsTable"/>
          <Event id="2" eventDestination="MessageTable"/>
          <Event id="3" eventDestination="SetOtherTable"/>
          <Event id="4" eventDestination="HighFreqTable"/>
          <DefaultEvents eventDestination="DefaultTable" />
        </EtwEventSourceProviderConfiguration>
      </EtwProviders>
    </DiagnosticMonitorConfiguration>
  </WadCfg>
</PublicConfig>

Langkah 5: Menginstal Diagnostik pada Peran Pekerja Anda

Cmdlet PowerShell untuk mengelola Diagnostik pada peran web atau pekerja adalah: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension, dan Remove-AzureServiceDiagnosticsExtension.

  1. Buka Azure PowerShell.
  2. Jalankan skrip untuk menginstal Diagnostik pada peran pekerja Anda (ganti StorageAccountKey dengan kunci akun penyimpanan untuk akun penyimpanan wadexample Anda dan config_path dengan jalur ke file WadExample.xml):
$storage_name = "wadexample"
$key = "<StorageAccountKey>"
$config_path="c:\users\<user>\documents\visual studio 2013\Projects\WadExample\WorkerRole1\WadExample.xml"
$service_name="wadexample"
$storageContext = New-AzureStorageContext -StorageAccountName $storage_name -StorageAccountKey $key
Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext -DiagnosticsConfigurationPath $config_path -ServiceName $service_name -Slot Staging -Role WorkerRole1

Langkah 6: Melihat data telemetri Anda

Di Server Explorer Visual Studio, navigasi ke akun penyimpanan wadexample. Setelah layanan awan berjalan sekitar lima (5) menit, Anda akan melihat tabel WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable, dan WADSetOtherTable. Klik dua kali salah satu tabel untuk melihat telemetri yang telah dikumpulkan.

CloudServices_diag_tables

Skema File Konfigurasi

File konfigurasi Diagnostik menentukan nilai yang digunakan untuk menginisialisasi pengaturan konfigurasi diagnostik saat agen diagnostik dimulai. Lihat referensi skema terbaru untuk nilai dan contoh yang valid.

Pemecahan Masalah

Jika Anda mengalami masalah, lihat Memecahkan Masalah Diagnostik Azure untuk bantuan terkait masalah umum.

Langkah berikutnya

Lihat daftar artikel diagnostik komputer virtual Azure terkait untuk mengubah data yang Anda kumpulkan, memecahkan masalah, atau mempelajari selengkapnya tentang diagnostik secara umum.