Povolení diagnostiky Azure v Azure Cloud Services (Classic)
Důležité
Od 1. září 2024 je služba Cloud Services (Classic) pro všechny zákazníky zastaralá. Microsoft zastaví a vypne všechna stávající spuštěná nasazení a data se od října 2024 trvale ztratí. Nová nasazení by měla používat nový model nasazení založený na Azure Resource Manageru na Azure Cloud Services (rozšířená podpora).
Přehled diagnostiky Azure najdete na pozadí diagnostiky Azure.
Povolení diagnostiky v roli pracovního procesu
Tento návod popisuje, jak implementovat roli pracovního procesu Azure, která generuje telemetrická data pomocí třídy .NET EventSource. Azure Diagnostics se používá ke shromažďování telemetrických dat a jejich ukládání do účtu úložiště Azure. Když vytvoříte roli pracovního procesu, Visual Studio automaticky povolí diagnostiku 1.0 jako součást řešení v sadě Azure Software Development Kits (SDK) pro .NET 2.4 a starší. Následující pokyny popisují proces vytvoření role pracovního procesu, zakázání diagnostiky 1.0 z řešení a nasazení diagnostiky 1.2 nebo 1.3 do role pracovního procesu.
Požadavky
Tento článek předpokládá, že máte předplatné Azure a používáte Sadu Visual Studio se sadou Azure SDK. Pokud nemáte předplatné Azure, můžete si zaregistrovat bezplatnou zkušební verzi. Nezapomeňte nainstalovat a nakonfigurovat Azure PowerShell verze 0.8.7 nebo novější.
Krok 1: Vytvoření role pracovního procesu
- Spusťte Visual Studio.
- Vytvořte projekt cloudové služby Azure ze šablony cloudu , která cílí na rozhraní .NET Framework 4.5. Pojmenujte projekt WadExample a vyberte OK.
- Vyberte Roli pracovního procesu a vyberte OK. Projekt je vytvořen.
- V Průzkumník řešení poklikejte na soubor vlastností WorkerRole1.
- Na kartě Konfigurace zrušte zaškrtnutí políčka Povolit diagnostiku a zakažte diagnostiku 1.0 (Azure SDK 2.4 a starší).
- Sestavte řešení, abyste ověřili, že nemáte žádné chyby.
Krok 2: Instrumentace kódu
Obsah WorkerRole.cs nahraďte následujícím kódem. Třída SampleEventSourceWriter, zděděná z Třídy EventSource, implementuje čtyři metody protokolování: SendEnums, MessageMethod, SetOther a HighFreq. První parametr metody WriteEvent definuje ID příslušné události. Metoda Run implementuje nekonečnou smyčku, která volá každou z metod protokolování implementovaných ve třídě SampleEventSourceWriter každých 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: Nasazení role pracovního procesu
Upozorňující
Když povolíte diagnostiku pro existující roli, všechna rozšíření, která jste už nastavili, budou při nasazení balíčku zakázána. Tady jsou některé z nich:
- Diagnostika agenta Microsoft Monitoring Agent
- Monitorování zabezpečení Microsoft Azure
- Antimalware od Microsoftu
- Microsoft Monitoring Agent
- Microsoft Service Profiler Agent
- Rozšíření domény Windows Azure
- Rozšíření Windows Azure Diagnostics
- Rozšíření Vzdálené plochy Windows Azure
- Kolektor protokolů Windows Azure
Po nasazení aktualizované role můžete rozšíření resetovat prostřednictvím webu Azure Portal nebo PowerShellu.
- Nasaďte svou roli pracovního procesu do Azure ze sady Visual Studio výběrem projektu WadExample v Průzkumník řešení pak z nabídky Sestavení publikovat.
- Zvolte vaše předplatné.
- V dialogovém okně Nastavení publikování v Microsoft Azure vyberte Vytvořit nový....
- V dialogovém okně Vytvořit cloudovou službu a účet úložiště zadejte název (například WadExample) a vyberte oblast nebo skupinu vztahů.
- Nastavte prostředí na přípravný.
- Podle potřeby upravte všechna ostatní nastavení a vyberte Publikovat.
- Po dokončení nasazení ověřte na webu Azure Portal, že je vaše cloudová služba ve spuštěném stavu.
Krok 4: Vytvoření konfiguračního souboru diagnostiky a instalace rozšíření
Stáhněte definici schématu veřejného konfiguračního souboru spuštěním následujícího příkazu PowerShellu:
(Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
Přidejte do projektu WorkerRole1 soubor XML tak, že kliknete pravým tlačítkem myši na projekt WorkerRole1 a vyberete Přidat ->Nová položka... ->Visual C# položky ->Data ->XML Soubor. Pojmenujte soubor
WadExample.xml
.Přidružte WadConfig.xsd ke konfiguračnímu souboru. Ujistěte se, že je aktivní okno editoru WadExample.xml. Stisknutím klávesy F4 otevřete okno Vlastnosti . V okně Vlastnosti vyberte vlastnost Schémata. Vyberte ... ve vlastnosti Schémata. Vyberte tlačítko Přidat... a přejděte do umístění, kam jste uložili soubor .xsd, a vyberte soubor WadConfig.xsd. Vyberte OK.
Nahraďte obsah konfiguračního souboru WadExample.xml následujícím kódem XML a soubor uložte. Tento konfigurační soubor definuje několik čítačů výkonu, které se mají shromáždit: jeden pro využití procesoru a druhý pro využití paměti. Pak konfigurace definuje čtyři události odpovídající metodám v SampleEventSourceWriter třídy.
<?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: Instalace diagnostiky do role pracovního procesu
Rutiny PowerShellu pro správu diagnostiky na webu nebo roli pracovního procesu jsou: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension a Remove-AzureServiceDiagnosticsExtension.
- Otevřete Azure PowerShell.
- Spusťte skript pro instalaci diagnostiky ve vaší roli pracovního procesu (nahraďte StorageAccountKey klíčem účtu úložiště pro váš účet úložiště wadexample a config_path cestou k souboru 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: Podívejte se na telemetrická data
V Průzkumníku serveru sady Visual Studio přejděte do účtu úložiště wadexample. Po spuštění cloudové služby přibližně pět (5) minut byste měli vidět tabulky WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable a WADSetOtherTable. Poklikáním na jednu z tabulek zobrazíte shromážděnou telemetrii.
Schéma konfiguračního souboru
Konfigurační soubor diagnostiky definuje hodnoty, které se po spuštění diagnostického agenta používají k inicializaci nastavení konfigurace diagnostiky. Platné hodnoty a příklady najdete v nejnovější referenční dokumentaci schématu.
Řešení problému
Pokud máte potíže, přečtěte si téma Řešení potíží s diagnostikou Azure, kde najdete nápovědu k běžným problémům.
Další kroky
Podívejte se na seznam souvisejících článků o diagnostice virtuálních počítačů Azure, kde můžete změnit data, která shromažďujete, řešit problémy nebo získat další informace o diagnostice obecně.