Povolení Azure Diagnostics v Azure Cloud Services (Classic)

Důležité

Cloud Services (classic) je teď pro nové zákazníky zastaralý a bude vyřazen 31. srpna 2024 pro všechny zákazníky. Nová nasazení by měla používat nový model nasazení Azure Resource Manager založený na Azure Cloud Services (rozšířená podpora).

Základní informace o Azure Diagnostics najdete v přehledu Azure Diagnostics.

Povolení diagnostiky v roli pracovního procesu

Tento názorný postup popisuje, jak implementovat roli pracovního procesu Azure, která generuje telemetrická data pomocí třídy .NET EventSource. Azure Diagnostics slouží ke shromažďování telemetrických dat a jejich ukládání do účtu úložiště Azure. Při vytváření role pracovního procesu Visual Studio automaticky povolí diagnostiku 1.0 jako součást řešení v sadách Azure 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

  1. Spusťte Visual Studio.
  2. Vytvořte projekt cloudové služby Azure ze šablony Cloud , která cílí na .NET Framework 4.5. Pojmenujte projekt WadExample a klikněte na OK.
  3. Vyberte Role pracovního procesu a klikněte na OK. Projekt se vytvoří.
  4. V Průzkumník řešení poklikejte na soubor vlastností WorkerRole1.
  5. Na kartě Konfigurace zrušte zaškrtnutí políčka Povolit diagnostiku a zakažte Tak diagnostiku 1.0 (Azure SDK 2.4 a starší).
  6. Sestavte řešení a ověřte, že nedošlo k žádným chybám.

Krok 2: Instrumentace kódu

Nahraďte obsah souboru WorkerRole.cs 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. Run Metoda implementuje nekonečnou smyčku, která volá každou z metod protokolování implementovaných v SampleEventSourceWriter třídy 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

Upozornění

Když povolíte diagnostiku pro existující roli, všechna rozšíření, která jste už nastavili, se při nasazení balíčku deaktivují. Tady jsou některé z nich:

  • Diagnostika agenta Microsoft Monitoring Agent
  • Microsoft Azure Security Monitoring
  • Antimalware od Microsoftu
  • Microsoft Monitoring Agent
  • Microsoft Service Profiler Agent
  • Rozšíření domény Windows Azure
  • Rozšíření Windows Azure Diagnostics
  • Rozšíření Windows Azure Remote Desktop
  • Kolektor protokolů Windows Azure

Po nasazení aktualizované role můžete rozšíření resetovat prostřednictvím Azure Portal nebo PowerShellu.

  1. Nasaďte roli pracovního procesu do Azure ze sady Visual Studio tak, že v Průzkumník řešení v nabídce Sestavení vyberete projekt WadExample a pak vyberete Publikovat.
  2. Zvolte vaše předplatné.
  3. V dialogovém okně Nastavení publikování Microsoft Azure vyberte Vytvořit nový....
  4. 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ů.
  5. Nastavte Prostředí na Pracovní.
  6. Podle potřeby upravte všechna ostatní nastavení a klikněte na Publikovat.
  7. Po dokončení nasazení ověřte v 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í

  1. 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'
    
  2. Do projektu WorkerRole1 přidejte soubor XML tak, že kliknete pravým tlačítkem na projekt WorkerRole1 a vyberete Přidat ->Nová položka... ->Visual C# položky ->Data ->XML Soubor. Pojmenujte soubor "WadExample.xml".

    CloudServices_diag_add_xml

  3. Přidružte Soubor WadConfig.xsd ke konfiguračnímu souboru. Ujistěte se, že je okno editoru WadExample.xml aktivní. Stisknutím klávesy F4 otevřete okno Vlastnosti . V okně Vlastnosti klikněte na vlastnost Schémata. Klikněte na ... ve vlastnosti Schémata . Klikněte na tlačítko Přidat... a přejděte do umístění, kam jste uložili soubor XSD, a vyberte soubor WadConfig.xsd. Klikněte na OK.

  4. 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í shromažďovat: jeden pro využití procesoru a jeden pro využití paměti. Pak konfigurace definuje čtyři události odpovídající metody 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.

  1. Otevřete Azure PowerShell.
  2. Spuštěním skriptu nainstalujte diagnostiku do role pracovního procesu (nahraďte StorageAccountKey klíčem účtu úložiště pro váš účet úložiště wadexample a config_path cestou k souboruWadExample.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: Zobrazení telemetrických dat

V Průzkumníku serveru sady Visual Studio přejděte k účtu úložiště wadexample. Po spuštění cloudové služby asi pět (5) minut byste měli vidět tabulky WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable a WADSetOtherTable. Poklikáním na některou z tabulek zobrazíte shromážděnou telemetrii.

CloudServices_diag_tables

Schéma konfiguračního souboru

Konfigurační soubor diagnostiky definuje hodnoty, které se použijí k inicializaci nastavení konfigurace diagnostiky při spuštění agenta diagnostiky. Platné hodnoty a příklady najdete v nejnovějších referenčních informacích ke schématu .

Řešení potíží

Pokud máte potíže, podívejte se na článek Řešení potíží s Azure Diagnostics, kde najdete pomoc s běžnými problémy.

Další kroky

Projděte si 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 obecné informace o diagnostice.