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ą trwale 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
- Uruchom program Visual Studio.
- 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.
- Wybierz pozycję Rola procesu roboczego i wybierz przycisk OK. Projekt został utworzony.
- W Eksplorator rozwiązań kliknij dwukrotnie plik właściwości WorkerRole1.
- Na karcie Konfiguracja usuń zaznaczenie pola Wyboru Włącz diagnostykę, aby wyłączyć diagnostykę 1.0 (zestaw Azure SDK 2.4 i starsze).
- 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.
- 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.
- 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 pozycję Środowisko na Przejściowe.
- Zmodyfikuj wszystkie inne ustawienia zgodnie z potrzebami i wybierz pozycję Publikuj.
- 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
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 polecenie Dodaj ->Nowy element... ->Elementy Visual C# ->Data ->PLIK XML. Nazwij plik
WadExample.xml
.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.
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 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.
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.