Dela via


Aktivera Azure Diagnostics i Azure Cloud Services (klassisk)

Viktigt!

Cloud Services (klassisk) är nu inaktuellt för alla kunder från och med den 1 september 2024. Alla befintliga distributioner som körs stoppas och stängs av av Microsoft och data kommer att förloras kontinuerligt från och med oktober 2024. Nya distributioner bör använda den nya Azure Resource Manager-baserade distributionsmodellen Azure Cloud Services (utökad support).

Mer information om Azure Diagnostics finns i Översikt över Azure Diagnostics.

Aktivera diagnostik i en arbetsroll

Den här genomgången beskriver hur du implementerar en Azure-arbetsroll som genererar telemetridata med klassen .NET EventSource. Azure Diagnostics används för att samla in telemetridata och lagra dem på ett Azure-lagringskonto. När du skapar en arbetsroll aktiverar Visual Studio automatiskt Diagnostics 1.0 som en del av lösningen i Azure Software Development Kits (SDK:er) för .NET 2.4 och tidigare. Följande instruktioner beskriver processen för att skapa arbetsrollen, inaktivera diagnostik 1.0 från lösningen och distribuera diagnostik 1.2 eller 1.3 till din arbetsroll.

Förutsättningar

Den här artikeln förutsätter att du har en Azure-prenumeration och använder Visual Studio med Azure SDK. Om du inte har en Azure-prenumeration kan du registrera dig för den kostnadsfria utvärderingsversionen. Se till att installera och konfigurera Azure PowerShell version 0.8.7 eller senare.

Steg 1: Skapa en arbetsroll

  1. Starta Visual Studio.
  2. Skapa ett Azure Cloud Service-projekt från molnmallen som riktar sig till .NET Framework 4.5. Ge projektet namnet "WadExample" och välj Ok.
  3. Välj Arbetsroll och välj Ok. Projektet har skapats.
  4. Dubbelklicka på egenskapsfilen WorkerRole1 i Solution Explorer.
  5. På fliken Konfiguration avmarkerar du Aktivera diagnostik för att inaktivera Diagnostik 1.0 (Azure SDK 2.4 och tidigare).
  6. Skapa din lösning för att kontrollera att du inte har några fel.

Steg 2: Instrumentera koden

Ersätt innehållet i WorkerRole.cs med följande kod. Klassen SampleEventSourceWriter, som ärvts från EventSource-klassen, implementerar fyra loggningsmetoder: SendEnums, MessageMethod, SetOther och HighFreq. Den första parametern till metoden WriteEvent definierar ID:t för respektive händelse. Metoden Run implementerar en oändlig loop som anropar var och en av de loggningsmetoder som implementeras i klassen SampleEventSourceWriter var 10:e 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();
        }
    }
}

Steg 3: Distribuera din arbetsroll

Varning

När du aktiverar diagnostik för en befintlig roll inaktiveras alla tillägg som du redan har angett när paketet distribueras. Dessa kan vara:

  • Microsoft Monitoring Agent Diagnostics
  • Säkerhetsövervakning i Microsoft Azure
  • Microsoft-programvara mot skadlig kod
  • Microsoft Monitoring Agent
  • Microsoft Service Profiler Agent
  • Windows Azure-domäntillägg
  • Windows Azure Diagnostics-tillägg
  • Windows Azure Remote Desktop-tillägg
  • Windows Azure-logginsamlare

Du kan återställa dina tillägg via Azure Portal eller PowerShell när du har distribuerat den uppdaterade rollen.

  1. Distribuera din arbetsroll till Azure inifrån Visual Studio genom att välja WadExample-projektet i Solution Explorer och sedan publicera från menyn Skapa.
  2. Välj din prenumeration.
  3. I dialogrutan Publiceringsinställningar för Microsoft Azure väljer du Skapa ny....
  4. I dialogrutan Skapa molntjänst och lagringskonto anger du ett namn (till exempel "WadExample") och väljer en region eller tillhörighetsgrupp.
  5. Ställ in miljönMellanlagring.
  6. Ändra eventuella andra inställningar efter behov och välj Publicera.
  7. När distributionen har slutförts kontrollerar du i Azure Portal att molntjänsten är i ett körningstillstånd.

Steg 4: Skapa diagnostikkonfigurationsfilen och installera tillägget

  1. Ladda ned den offentliga konfigurationsfilens schemadefinition genom att köra följande PowerShell-kommando:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Lägg till en XML-fil i ditt WorkerRole1-projekt genom att högerklicka på WorkerRole1-projektet och välja Lägg till ->Nytt objekt... -Visual C#->objekt ->Data ->XML-fil. Ge filen namnet WadExample.xml.

    CloudServices_diag_add_xml

  3. Associera WadConfig.xsd med konfigurationsfilen. Kontrollera att WadExample.xml-redigerarfönstret är det aktiva fönstret. Tryck på F4 för att öppna fönstret Egenskaper . Välj egenskapen Schemas i fönstret Egenskaper. Välj ... i egenskapen Schemas. Välj knappen Lägg till... och navigera till platsen där du sparade .xsd-filen och välj filen WadConfig.xsd. Välj OK.

  4. Ersätt innehållet i WadExample.xml-konfigurationsfilen med följande XML och spara filen. Den här konfigurationsfilen definierar ett par prestandaräknare att samla in: en för CPU-användning och en för minnesanvändning. Sedan definierar konfigurationen de fyra händelser som motsvarar metoderna i klassen 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>

Steg 5: Installera diagnostik för din arbetsroll

PowerShell-cmdletar för att hantera diagnostik på en webb- eller arbetsroll är: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension och Remove-AzureServiceDiagnosticsExtension.

  1. Öppna Azure PowerShell.
  2. Kör skriptet för att installera Diagnostik för din arbetsroll (ersätt StorageAccountKey med lagringskontonyckeln för ditt wadexample-lagringskonto och config_path med sökvägen till WadExample.xml-filen ):
$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

Steg 6: Titta på dina telemetridata

I Visual Studio Server Explorer navigerar du till wadexample-lagringskontot. När molntjänsten har körts i ungefär fem minuter bör du se tabellerna WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable och WADSetOtherTable. Dubbelklicka på en av tabellerna för att visa den insamlade telemetrin.

CloudServices_diag_tables

Konfigurationsfilschema

Konfigurationsfilen Diagnostik definierar värden som används för att initiera diagnostikkonfigurationsinställningar när diagnostikagenten startar. Se den senaste schemareferensen för giltiga värden och exempel.

Felsökning

Om du har problem kan du läsa Felsöka Azure Diagnostics för hjälp med vanliga problem.

Nästa steg

Se en lista över relaterade diagnostikartiklar för virtuella Azure-datorer för att ändra de data du samlar in, felsöka problem eller lära dig mer om diagnostik i allmänhet.