Aktivera Azure Diagnostics i Azure Cloud Services (klassisk)

Viktigt

Cloud Services (klassisk) är nu inaktuell för nya kunder och kommer att dras tillbaka den 31 augusti 2024 för alla kunder. Nya distributioner bör använda den nya Azure Resource Manager-baserade distributionsmodellen Azure Cloud Services (utökad support).

En bakgrund om Azure Diagnostics finns i Azure Diagnostics Översikt.

Så här aktiverar du 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 i ett Azure Storage-konto. När du skapar en arbetsroll aktiverar Visual Studio automatiskt Diagnostics 1.0 som en del av lösningen i Azure SDK:er för .NET 2.4 och tidigare. I följande instruktioner beskrivs 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 klicka på Ok.
  3. Välj Arbetsroll och klicka på OK. Projektet kommer att skapas.
  4. I Solution Explorer dubbelklickar du på egenskapsfilen WorkerRole1.
  5. På fliken Konfigurationavmarkerar 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 i 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 omfattar:

  • Diagnostik för Microsoft Monitoring Agent
  • 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-fjärrskrivbordstillä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 frå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 klicka på Publicera.
  7. När distributionen har slutförts kontrollerar du i Azure Portal att molntjänsten är i tillståndet Körs.

Steg 4: Skapa diagnostikkonfigurationsfilen och installera tillägget

  1. Ladda ned schemadefinitionen för den offentliga konfigurationsfilen 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-redigeringsfönstret är det aktiva fönstret. Tryck på F4 för att öppna fönstret Egenskaper . Klicka på egenskapen Scheman i fönstret Egenskaper . Klicka på ... i egenskapen Scheman . Klicka på knappen Lägg till... och navigera till platsen där du sparade XSD-filen och välj filen WadConfig.xsd. Klicka på 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 på 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 på arbetsrollen (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 går du till wadexample-lagringskontot. När molntjänsten har körts ungefär fem (5) minuter bör du se tabellerna WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable och WADSetOtherTable. Dubbelklicka på en av tabellerna för att visa telemetrin som har samlats in.

CloudServices_diag_tables

Schema för konfigurationsfil

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 som du samlar in, felsöka problem eller lära dig mer om diagnostik i allmänhet.