Azure Cloud Services'da Azure Tanılama etkinleştirme (klasik)

Önemli

Cloud Services (klasik) artık yeni müşteriler için kullanımdan kaldırılmıştır ve tüm müşteriler için 31 Ağustos 2024'te kullanımdan kaldırılacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.

Azure Tanılama arka planı için bkz. Azure Tanılama Genel Bakış.

Çalışan Rolünde Tanılamayı Etkinleştirme

Bu kılavuzda.NET EventSource sınıfını kullanarak telemetri verilerini yayan bir Azure çalışan rolünün nasıl uygulandığı açıklanmaktadır. Azure Tanılama, telemetri verilerini toplamak ve bir Azure depolama hesabında depolamak için kullanılır. Bir çalışan rolü oluşturduğunuzda Visual Studio, .NET 2.4 ve önceki sürümleri için Azure Yazılım Geliştirme Setleri'ndeki (SDK) çözümün bir parçası olarak Tanılama 1.0'ı otomatik olarak etkinleştirir. Aşağıdaki yönergelerde çalışan rolünü oluşturma, çözümden Tanılama 1.0'ı devre dışı bırakma ve Çalışan rolünüz için Tanılama 1.2 veya 1.3 dağıtma işlemi açıklanmaktadır.

Önkoşullar

Bu makalede bir Azure aboneliğiniz olduğu ve Azure SDK ile Visual Studio kullandığınız varsayılır. Azure aboneliğiniz yoksa Ücretsiz Deneme sürümüne kaydolabilirsiniz. Azure PowerShell sürüm 0.8.7 veya üzerini yüklediğinizden ve yapılandırdığından emin olun.

1. Adım: Çalışan Rolü Oluşturma

  1. Visual Studio’yu başlatın.
  2. Bulut şablonundan .NET Framework 4.5'i hedefleyen bir Azure Cloud Service projesi oluşturun. Projeyi "WadExample" olarak adlandırın ve Tamam'ı seçin.
  3. Çalışan Rolü'ne ve ardından Tamam'a tıklayın. Proje oluşturuldu.
  4. Çözüm Gezgini'da WorkerRole1 özellikler dosyasına çift tıklayın.
  5. Yapılandırma sekmesinde Tanılama 1.0'ı (Azure SDK 2.4 ve öncesi) devre dışı bırakmak için Tanılamayı Etkinleştir'in işaretini kaldırın.
  6. Hata olmadığını doğrulamak için çözümünüzü oluşturun.

2. Adım: Kodunuzu izleme

WorkerRole.cs içeriğini aşağıdaki kodla değiştirin. EventSource Sınıfından devralınan SampleEventSourceWriter sınıfı dört günlük yöntemi uygular: SendEnums, MessageMethod, SetOther ve HighFreq. WriteEvent yönteminin ilk parametresi, ilgili olayın kimliğini tanımlar. Run yöntemi, SampleEventSourceWriter sınıfında 10 saniyede bir uygulanan günlük yöntemlerinin her birini çağıran sonsuz bir döngü uygular.

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();
        }
    }
}

3. Adım: Çalışan Rolünüzü Dağıtma

Uyarı

Mevcut bir rol için tanılamayı etkinleştirdiğinizde, paket dağıtıldığında önceden ayarlamış olduğunuz tüm uzantılar devre dışı bırakılır. Bu modüller şunlardır:

  • Microsoft Monitoring Agent Tanılama
  • Microsoft Azure Güvenlik İzleme
  • Microsoft Kötü Amaçlı Yazılımdan Koruma
  • Microsoft Monitoring Agent
  • Microsoft Hizmet Profili Oluşturucu Aracısı
  • Windows Azure Etki Alanı Uzantısı
  • Windows Azure Tanılama Uzantısı
  • Windows Azure Uzak Masaüstü Uzantısı
  • Windows Azure Günlük Toplayıcısı

Güncelleştirilmiş rolü dağıttığınızda Azure portalı veya PowerShell aracılığıyla uzantılarınızı sıfırlayabilirsiniz.

  1. Çözüm Gezgini WadExample projesini ve ardından Oluştur menüsünden Yayımla'yı seçerek çalışan rolünüzü Visual Studio'dan Azure'a dağıtın.
  2. Aboneliğinizi seçin.
  3. Microsoft Azure Yayımlama Ayarları iletişim kutusunda Yeni Oluştur... öğesini seçin.
  4. Bulut Hizmeti ve Depolama Hesabı Oluştur iletişim kutusunda, bir Ad (örneğin, "WadExample") girin ve bir bölge veya benek grubu seçin.
  5. Ortamı Hazırlama olarak ayarlayın.
  6. Diğer ayarları uygun şekilde değiştirin ve Yayımla'yı seçin.
  7. Dağıtım tamamlandıktan sonra Azure portalında bulut hizmetinizin Çalışıyor durumda olduğunu doğrulayın.

4. Adım: Tanılama yapılandırma dosyanızı oluşturma ve uzantıyı yükleme

  1. Aşağıdaki PowerShell komutunu yürüterek genel yapılandırma dosyası şema tanımını indirin:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. WorkerRole1 projesine sağ tıklayıp Ekle -Yeni Öğe... ->Visual C# öğeleri ->>Data ->XML Dosyası'nı seçerek WorkerRole1 projenize bir XML dosyası ekleyin. Dosyayı WadExample.xml olarak adlandırın.

    CloudServices_diag_add_xml

  3. WadConfig.xsd dosyasını yapılandırma dosyasıyla ilişkilendirin. WadExample.xml düzenleyici penceresinin etkin pencere olduğundan emin olun. Özellikler penceresini açmak için F4 tuşuna basın. Özellikler penceresinde Schemas özelliğini seçin. Schemas özelliğinde ... öğesini seçin. Ekle... düğmesini seçin ve .xsd dosyasını kaydettiğiniz konuma gidin ve WadConfig.xsd dosyasını seçin. Tamam'ı seçin.

  4. WadExample.xml yapılandırma dosyasının içeriğini aşağıdaki XML ile değiştirin ve dosyayı kaydedin. Bu yapılandırma dosyası, biri CPU kullanımı ve diğeri bellek kullanımı için olmak üzere toplayacak birkaç performans sayacı tanımlar. Ardından yapılandırma, SampleEventSourceWriter sınıfındaki yöntemlere karşılık gelen dört olayı tanımlar.

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

5. Adım: Çalışan Rolünüzde Tanılamayı Yükleme

Bir web veya çalışan rolünde Tanılamayı yönetmek için PowerShell cmdlet'leri şunlardır: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension ve Remove-AzureServiceDiagnosticsExtension.

  1. Azure PowerShell'i açın.
  2. Çalışan rolünüzde Tanılama'yı yüklemek için betiği yürütebilirsiniz (StorageAccountKey değerini wadexample depolama hesabınızın depolama hesabı anahtarıyla değiştirin ve WadExample.xml dosyasının yolunu config_path):
$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

6. Adım: Telemetri verilerinize bakın

Visual Studio Server Gezgini'nde wadexample depolama hesabına gidin. Bulut hizmeti yaklaşık beş (5) dakika çalıştırıldıktan sonra WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable ve WADSetOtherTable tablolarını görmeniz gerekir. Toplanan telemetri verilerini görüntülemek için tablolardan birine çift tıklayın.

CloudServices_diag_tables

Yapılandırma Dosyası Şeması

Tanılama yapılandırma dosyası, tanılama aracısı başlatıldığında tanılama yapılandırma ayarlarını başlatmak için kullanılan değerleri tanımlar. Geçerli değerler ve örnekler için en son şema başvurusuna bakın.

Sorun giderme

Sorun yaşıyorsanız yaygın sorunlarla ilgili yardım için bkz. sorun giderme Azure Tanılama.

Sonraki Adımlar

Topladığınız verileri değiştirmek, sorunları gidermek veya genel olarak tanılama hakkında daha fazla bilgi edinmek için ilgili Azure sanal makine tanılama makalelerinin listesine bakın.