Sdílet prostřednictvím


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

  1. Spusťte Visual Studio.
  2. 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.
  3. Vyberte Roli pracovního procesu a vyberte OK. Projekt je vytvořen.
  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 diagnostiku 1.0 (Azure SDK 2.4 a starší).
  6. 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.

  1. 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.
  2. Zvolte vaše předplatné.
  3. V dialogovém okně Nastavení publikování v 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 přípravný.
  6. Podle potřeby upravte všechna ostatní nastavení a vyberte Publikovat.
  7. 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í

  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. 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.

    CloudServices_diag_add_xml

  3. 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.

  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í 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.

  1. Otevřete Azure PowerShell.
  2. 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.

CloudServices_diag_tables

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ě.