Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 Omówienie Diagnostyki Azure, aby zapoznać się z Diagnostyką Azure.
Jak włączyć diagnostykę w roli pracownika
W tym przewodniku opisano sposób implementowania roli roboczej platformy Azure, która emituje dane telemetryczne przy użyciu klasy o nazwie 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 jako część rozwiązania w zestawach SDK (Software Development Kit) Azure dla platformy .NET 2.4 i starszych wersji. Poniższe instrukcje opisują proces tworzenia roli pracownika, wyłączania Diagnostyki 1.0 z rozwiązania oraz wdrażania Diagnostyki 1.2 lub 1.3 do roli pracownika.
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 roboczej
- 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 Rola pracownika i wybierz OK. Projekt został utworzony.
- W Eksplorator rozwiązań kliknij dwukrotnie plik właściwości WorkerRole1.
- Na karcie Konfiguracja usuń zaznaczenie pola Włącz diagnostykę, aby wyłączyć Diagnostykę 1.0 (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 roboczej
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
- Agent monitorujący Microsoft
- Agent profilera usług firmy Microsoft
- Rozszerzenie domeny platformy Windows Azure
- Rozszerzenie diagnostyczne Windows Azure
- Rozszerzenie zdalnego pulpitu 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 Eksploratorze rozwiązań, następnie wybierz z menu Kompilacja pozycję Publikuj.
- Wybierz swoją subskrypcję.
- W oknie dialogowym Ustawienia publikowania platformy Microsoft Azure wybierz pozycję Utwórz nowy....
- W oknie dialogowym Tworzenie usługi w chmurze i konta magazynowego wprowadź nazwę (na przykład "WadExample") i wybierz region lub grupę koligacji.
- Ustaw Środowisko na Przejściowe.
- Zmodyfikuj wszystkie inne ustawienia zgodnie z potrzebami i wybierz pozycję Publikuj.
- Po zakończeniu wdrażania, sprawdź w Azure Portal, czy usługa chmurowa 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 -> -> Visual C# -> ->. Nadaj plikowi nazwę
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 w oknie Właściwości. Wybierz … 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. 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 roboczej
Polecenia cmdlet programu PowerShell do zarządzania diagnostyką roli webowej lub roboczej to: „Set-AzureServiceDiagnosticsExtension”, „Get-AzureServiceDiagnosticsExtension” i „Remove-AzureServiceDiagnosticsExtension”.
- Otwórz program Azure PowerShell.
- Wykonaj skrypt, aby zainstalować diagnostykę w roli pracownika (zastąp StorageAccountKey kluczem konta magazynu dla 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 serwera programu Visual Studio przejdź do konta usługi magazynowej wadexample. Po tym, jak usługa w chmurze będzie działać przez około pięć (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 najnowsze odniesienie schematu dla prawidłowych wartości i przykładów.
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.