Azure Cloud Services'de 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 hakkında 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. Çalışan rolü oluştururken Visual Studio, .NET 2.4 ve önceki sürümler için Azure SDK'larında çö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üzde 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. 0.8.7 veya sonraki Azure PowerShell sürümünü 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 Bulut Hizmeti projesi oluşturun. Projeyi "WadExample" olarak adlandırın ve Tamam'a tıklayın.
  3. Çalışan Rolü'ne tıklayın ve Tamam'a tıklayın. Proje oluşturulur.
  4. Çözüm Gezgini'daWorkerRole1 özellikler dosyasına çift tıklayın.
  5. Tanılama 1.0'ı (Azure SDK 2.4 ve öncesi) devre dışı bırakmak için Yapılandırma sekmesinde Tanılamayı Etkinleştir seçeneğinin 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 dosyasının 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 her 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 Korunma
  • 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ı

Güncelleştirilmiş rolü dağıttığınızda uzantılarınızı Azure portal veya PowerShell aracılığıyla 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 beninite grubu seçin.
  5. OrtamıHazırlama olarak ayarlayın.
  6. Diğer Ayarları uygun şekilde değiştirin ve Yayımla'ya tıklayın.
  7. Dağıtım tamamlandıktan sonra Azure portal 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üzenleyicisi penceresinin etkin pencere olduğundan emin olun. Özellikler penceresini açmak için F4 tuşuna basın. Özellikler penceresinde Schemas özelliğine tıklayın. Schemas özelliğinde ... öğesine tıklayın. Ekle... düğmesine tıklayın ve XSD dosyasını kaydettiğiniz konuma gidin ve WadConfig.xsd dosyasını seçin. Tamam'a tıklayın.

  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ı, diğeri de 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 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.