Włączanie Diagnostyka Azure w usłudze Azure Cloud Services (wersja klasyczna)

Ważne

Cloud Services (wersja klasyczna) jest teraz przestarzała dla nowych klientów i zostanie wycofana 31 sierpnia 2024 r. dla wszystkich klientów. Nowe wdrożenia powinny korzystać z nowego modelu wdrażania opartego na usłudze Azure Resource Manager Azure Cloud Services (rozszerzona obsługa)."

Zobacz Diagnostyka Azure Overview (Omówienie Diagnostyka Azure), aby zapoznać się z Diagnostyka Azure.

Jak włączyć diagnostykę w roli procesu roboczego

W tym przewodniku opisano sposób implementowania roli procesu roboczego platformy Azure, która emituje dane telemetryczne przy użyciu klasy .NET EventSource. Diagnostyka Azure służy do zbierania danych telemetrycznych i przechowywania ich na koncie usługi Azure Storage. Podczas tworzenia roli procesu roboczego program Visual Studio automatycznie włącza diagnostykę 1.0 w ramach rozwiązania w zestawach Azure SDK dla platformy .NET 2.4 i starszych. Poniższe instrukcje opisują proces tworzenia roli procesu roboczego, wyłączania diagnostyki 1.0 z rozwiązania i wdrażania diagnostyki 1.2 lub 1.3 do roli procesu roboczego.

Wymagania wstępne

W tym artykule założono, że masz subskrypcję platformy Azure i używasz programu Visual Studio z zestawem Azure SDK. Jeśli nie masz subskrypcji platformy Azure, możesz utworzyć konto bezpłatnej wersji próbnej. Pamiętaj, aby zainstalować i skonfigurować Azure PowerShell w wersji 0.8.7 lub nowszej.

Krok 1. Tworzenie roli procesu roboczego

  1. Uruchom program Visual Studio.
  2. Utwórz projekt usługi Azure Cloud Service na podstawie szablonu chmury, który jest przeznaczony dla .NET Framework 4.5. Nadaj projektowi nazwę "WadExample" i kliknij przycisk OK.
  3. Wybierz pozycję Rola procesu roboczego i kliknij przycisk OK. Projekt zostanie utworzony.
  4. W Eksplorator rozwiązań kliknij dwukrotnie plik właściwości WorkerRole1.
  5. Na karcie Konfiguracja usuń zaznaczenie opcji Włącz diagnostykę , aby wyłączyć diagnostykę 1.0 (zestaw Azure SDK 2.4 i starsze).
  6. Skompiluj rozwiązanie, aby sprawdzić, czy nie masz żadnych błędów.

Krok 2. Instrumentacja kodu

Zastąp zawartość pliku WorkerRole.cs następującym kodem. Klasa SampleEventSourceWriter dziedziczona z klasy EventSource implementuje cztery metody rejestrowania: SendEnums, MessageMethod, SetOther i HighFreq. Pierwszy parametr metody WriteEvent definiuje identyfikator odpowiedniego zdarzenia. Metoda Run implementuje nieskończoną pętlę, która wywołuje każdą z metod rejestrowania zaimplementowanych w klasie SampleEventSourceWriter co 10 sekund.

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

Krok 3. Wdrażanie roli procesu roboczego

Ostrzeżenie

Po włączeniu diagnostyki istniejącej roli wszystkie ustawione rozszerzenia są wyłączone po wdrożeniu pakietu. Są one następujące:

  • Diagnostyka programu Microsoft Monitoring Agent
  • Monitorowanie zabezpieczeń platformy Microsoft Azure
  • Usługa firmy Microsoft chroniąca przed złośliwym kodem
  • Microsoft Monitoring Agent
  • Agent profilera usługi firmy Microsoft
  • Rozszerzenie domeny platformy Windows Azure
  • Rozszerzenie Diagnostyka Azure systemu Windows
  • Rozszerzenie pulpitu zdalnego platformy Windows Azure
  • Moduł zbierający dzienniki platformy Windows Azure

Rozszerzenia można zresetować za pomocą Azure Portal lub programu PowerShell po wdrożeniu zaktualizowanej roli.

  1. Wdróż rolę procesu roboczego na platformie Azure z poziomu programu Visual Studio, wybierając projekt WadExample w Eksplorator rozwiązań następnie pozycję Publikuj z menu Kompilacja.
  2. Wybierz subskrypcję.
  3. W oknie dialogowym Ustawienia publikowania platformy Microsoft Azure wybierz pozycję Utwórz nowy....
  4. W oknie dialogowym Tworzenie usługi w chmurze i konta magazynu wprowadź nazwę (na przykład "WadExample") i wybierz region lub grupę koligacji.
  5. Ustaw ustawienie Środowisko na Przejściowe.
  6. Zmodyfikuj dowolne inne ustawienia zgodnie z potrzebami i kliknij przycisk Publikuj.
  7. Po zakończeniu wdrażania sprawdź w Azure Portal, czy usługa w chmurze jest w stanie Uruchomiony.

Krok 4. Tworzenie pliku konfiguracji diagnostyki i instalowanie rozszerzenia

  1. Pobierz definicję schematu pliku konfiguracji publicznej, wykonując następujące polecenie programu PowerShell:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Dodaj plik XML do projektu WorkerRole1 , klikając prawym przyciskiem myszy projekt WorkerRole1 , a następnie wybierz pozycję Dodaj ->Nowy element... ->Elementy Visual C# ->Data ->PLIK XML. Nadaj plikowi nazwę "WadExample.xml".

    CloudServices_diag_add_xml

  3. Skojarz plik WadConfig.xsd z plikiem konfiguracji. Upewnij się, że okno edytora WadExample.xml jest aktywnym oknem. Naciśnij klawisz F4 , aby otworzyć okno Właściwości . Kliknij właściwość Schemas w oknie Właściwości . Kliknij właściwość ... w właściwości Schemas . Kliknij przycisk Dodaj... i przejdź do lokalizacji, w której zapisano plik XSD, a następnie wybierz plik WadConfig.xsd. Kliknij przycisk OK.

  4. Zastąp zawartość pliku konfiguracji WadExample.xml następującym kodem XML i zapisz plik. Ten plik konfiguracji definiuje kilka liczników wydajności do zebrania: jeden dla użycia procesora CPU i jeden dla wykorzystania pamięci. Następnie konfiguracja definiuje cztery zdarzenia odpowiadające metodom w klasie 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>

Krok 5. Instalowanie diagnostyki w roli procesu roboczego

Polecenia cmdlet programu PowerShell do zarządzania diagnostyką w roli sieci Web lub procesu roboczego to: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension i Remove-AzureServiceDiagnosticsExtension.

  1. Otwórz program Azure PowerShell.
  2. Wykonaj skrypt, aby zainstalować diagnostykę w roli procesu roboczego (zastąp ciąg StorageAccountKey kluczem konta magazynu dla konta magazynu wadexample i config_path ścieżką do pliku 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

Krok 6. Zapoznanie się z danymi telemetrii

W Eksploratorze programu Visual Studio Server przejdź do konta magazynu wadexample. Po uruchomieniu usługi w chmurze około pięciu (5) minut powinny zostać wyświetlone tabele WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable i WADSetOtherTable. Kliknij dwukrotnie jedną z tabel, aby wyświetlić zebrane dane telemetryczne.

CloudServices_diag_tables

Schemat pliku konfiguracji

Plik konfiguracji diagnostyki definiuje wartości używane do inicjowania ustawień konfiguracji diagnostycznej po uruchomieniu agenta diagnostyki. Zobacz najnowszą dokumentację schematu , aby zapoznać się z prawidłowymi wartościami i przykładami.

Rozwiązywanie problemów

Jeśli masz problemy, zobacz Rozwiązywanie problemów Diagnostyka Azure, aby uzyskać pomoc dotyczącą typowych problemów.

Następne kroki

Zapoznaj się z listą powiązanych artykułów diagnostycznych maszyn wirtualnych platformy Azure , aby zmienić zbierane dane, rozwiązać problemy lub dowiedzieć się więcej na temat diagnostyki ogólnie.