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
- Uruchom program Visual Studio.
- 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.
- Wybierz pozycję Rola procesu roboczego i kliknij przycisk OK. Projekt zostanie utworzony.
- W Eksplorator rozwiązań kliknij dwukrotnie plik właściwości WorkerRole1.
- Na karcie Konfiguracja usuń zaznaczenie opcji Włącz diagnostykę , aby wyłączyć diagnostykę 1.0 (zestaw Azure SDK 2.4 i starsze).
- 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.
- 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.
- Wybierz subskrypcję.
- W oknie dialogowym Ustawienia publikowania platformy Microsoft Azure wybierz pozycję Utwórz nowy....
- W oknie dialogowym Tworzenie usługi w chmurze i konta magazynu wprowadź nazwę (na przykład "WadExample") i wybierz region lub grupę koligacji.
- Ustaw ustawienie Środowisko na Przejściowe.
- Zmodyfikuj dowolne inne ustawienia zgodnie z potrzebami i kliknij przycisk Publikuj.
- 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
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'
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".
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.
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.
- Otwórz program Azure PowerShell.
- 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.
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.