Udostępnij za pośrednictwem


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

Ważne

Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla wszystkich klientów od 1 września 2024 r. Wszystkie istniejące uruchomione wdrożenia zostaną zatrzymane i zamknięte przez firmę Microsoft, a dane zostaną przypadkowo utracone od października 2024 r. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).

Zobacz Diagnostyka Azure Omówienie, 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 EventSource platformy .NET. 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 Software Development Kit (SDK) dla platformy .NET 2.4 i starszych wersji. Poniższe instrukcje opisują proces tworzenia roli procesu roboczego, wyłączania diagnostyki 1.0 z rozwiązania oraz 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ć program 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 w chmurze platformy Azure na podstawie szablonu chmury, który jest przeznaczony dla programu .NET Framework 4.5. Nadaj projektowi nazwę "WadExample" i wybierz przycisk OK.
  3. Wybierz pozycję Rola procesu roboczego i wybierz przycisk OK. Projekt został utworzony.
  4. W Eksplorator rozwiązań kliknij dwukrotnie plik właściwości WorkerRole1.
  5. Na karcie Konfiguracja usuń zaznaczenie pola Wyboru Włącz diagnostykę, aby wyłączyć diagnostykę 1.0 (zestaw Azure SDK 2.4 i starsze).
  6. Skompiluj rozwiązanie, aby sprawdzić, czy nie występują błędy.

Krok 2. Instrumentacja kodu

Zastąp zawartość 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 dla istniejącej roli wszystkie rozszerzenia, które zostały już ustawione, są wyłączone podczas wdrażania pakietu. Są to:

  • Diagnostyka programu Microsoft Monitoring Agent
  • Monitorowanie zabezpieczeń platformy Microsoft Azure
  • Rozwiązanie Microsoft Antimalware
  • Microsoft Monitoring Agent
  • Agent profilera usług 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 pośrednictwem witryny 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ń a 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 pozycję Środowisko na Przejściowe.
  6. Zmodyfikuj wszystkie inne ustawienia zgodnie z potrzebami i wybierz pozycję Publikuj.
  7. Po zakończeniu wdrażania sprawdź w witrynie 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 polecenie Dodaj ->Nowy element... ->Elementy Visual C# ->Data ->PLIK XML. Nazwij plik 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 F4 , aby otworzyć okno Właściwości . Wybierz właściwość Schemas (Schematy) w oknie Właściwości. Wybierz właściwość ... w właściwości Schemas . Wybierz przycisk Dodaj... i przejdź do lokalizacji, w której zapisano plik xsd, a następnie wybierz plik WadConfig.xsd. Wybierz 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 wartość 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. Spojrzenie na dane telemetryczne

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 podczas uruchamiania agenta diagnostyki. Zobacz najnowszą dokumentację schematu, aby uzyskać prawidłowe wartości i przykłady.

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 dotyczących maszyn wirtualnych platformy Azure, aby zmienić zbierane dane, rozwiązywać problemy lub dowiedzieć się więcej na temat ogólnej diagnostyki.