Aktivera Azure-diagnostik i Azure Cloud ServicesEnabling Azure Diagnostics in Azure Cloud Services

Se översikt över Azure-diagnostik för en bakgrund på Azure-diagnostik.See Azure Diagnostics Overview for a background on Azure Diagnostics.

Så här aktiverar du diagnostik i en ArbetsrollHow to Enable Diagnostics in a Worker Role

Den här genomgången beskriver hur du implementerar en Azure worker-roll som genererar telemetridata med hjälp av .NET EventSource-klassen.This walkthrough describes how to implement an Azure worker role that emits telemetry data using the .NET EventSource class. Azure-diagnostik används för att samla in dessa data och lagra den i ett Azure storage-konto.Azure Diagnostics is used to collect the telemetry data and store it in an Azure storage account. När du skapar en arbetsroll kan Visual Studio automatiskt diagnostik 1.0 som en del av lösningen i Azure SDK för .NET 2.4 och tidigare.When creating a worker role, Visual Studio automatically enables Diagnostics 1.0 as part of the solution in Azure SDKs for .NET 2.4 and earlier. I följande anvisningar beskrivs processen för att skapa arbetsrollen, inaktivera diagnostik 1.0 från lösningen, och distribuera diagnostik 1.2 eller 1.3 till worker-roll.The following instructions describe the process for creating the worker role, disabling Diagnostics 1.0 from the solution, and deploying Diagnostics 1.2 or 1.3 to your worker role.

FörutsättningarPrerequisites

Den här artikeln förutsätter att du har en Azure-prenumeration och använder Visual Studio med Azure SDK.This article assumes you have an Azure subscription and are using Visual Studio with the Azure SDK. Om du inte har en Azure-prenumeration kan du registrera dig för den kostnadsfri utvärderingsversion.If you do not have an Azure subscription, you can sign up for the Free Trial. Se till att installera och konfigurera Azure PowerShell version 0.8.7 eller senare.Make sure to Install and configure Azure PowerShell version 0.8.7 or later.

Steg 1: Skapa en ArbetsrollStep 1: Create a Worker Role

  1. Starta Visual Studio.Launch Visual Studio.
  2. Skapa en Azure Cloud Service -projekt utifrån den molnet mall som riktas mot .NET Framework 4.5.Create an Azure Cloud Service project from the Cloud template that targets .NET Framework 4.5. Namnge projektet ”WadExample” och klicka på Ok.Name the project "WadExample" and click Ok.
  3. Välj Arbetsroll och klicka på Ok.Select Worker Role and click Ok. Projektet skapas.The project will be created.
  4. I Solution Explorer, dubbelklicka på den WorkerRole1 egenskapers.In Solution Explorer, double-click the WorkerRole1 properties file.
  5. I den Configuration fliken avmarkerar aktivera diagnostik att inaktivera diagnostik 1.0 (Azure SDK 2.4 och tidigare versioner).In the Configuration tab, un-check Enable Diagnostics to disable Diagnostics 1.0 (Azure SDK 2.4 and earlier).
  6. Skapa en lösning för att kontrollera att du har inga fel.Build your solution to verify that you have no errors.

Steg 2: Instrumentera din kodStep 2: Instrument your code

Ersätt innehållet i WorkerRole.cs med följande kod.Replace the contents of WorkerRole.cs with the following code. Klass SampleEventSourceWriter, som ärvts från den EventSource klass, implementerar fyra loggningsmetoder: SendEnums, MessageMethod, SetOther och HighFreq.The class SampleEventSourceWriter, inherited from the EventSource Class, implements four logging methods: SendEnums, MessageMethod, SetOther and HighFreq. Den första parametern för den WriteEvent metoden definierar ID för händelsen respektive.The first parameter to the WriteEvent method defines the ID for the respective event. Metoden Kör implementerar en oändlig loop som anropar var och en av loggningsmetoder som implementerats i den SampleEventSourceWriter klassen var tionde sekund.The Run method implements an infinite loop that calls each of the logging methods implemented in the SampleEventSourceWriter class every 10 seconds.

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 ArbetsrollStep 3: Deploy your Worker Role

Varning

När du aktiverar diagnostik för en befintlig roll har några tillägg som du redan har inaktiverats när paketet har distribuerats.When you enable diagnostics for an existing role, any extensions that you have already set are disabled when the package is deployed. Exempel på dessa är:These include:

  • Microsoft Monitoring Agent-diagnostikMicrosoft Monitoring Agent Diagnostics
  • Övervakning av Microsoft Azure-säkerhetMicrosoft Azure Security Monitoring
  • Microsoft-programvara mot skadlig kodMicrosoft Antimalware
  • Microsoft Monitoring AgentMicrosoft Monitoring Agent
  • Microsoft Service Profiler-AgentMicrosoft Service Profiler Agent
  • Tillägget för Windows Azure-domänWindows Azure Domain Extension
  • Windows Azure Diagnostics-tilläggWindows Azure Diagnostics Extension
  • Windows Azure Remote Desktop-tilläggWindows Azure Remote Desktop Extension
  • Windows Azure-LogginsamlareWindows Azure Log Collector

Du kan återställa dina tillägg via Azure portal eller PowerShell när du har distribuerat den uppdaterade rollen.You can reset your extensions via the Azure portal or PowerShell after you deploy the updated role.

  1. Distribuera din arbetsroll till Azure från Visual Studio genom att välja den WadExample projektet i Solution Explorer sedan publicera från den skapa menyn.Deploy your worker role to Azure from within Visual Studio by selecting the WadExample project in the Solution Explorer then Publish from the Build menu.
  2. Välj din prenumeration.Choose your subscription.
  3. I den Microsoft Azure-Publiceringsinställningar dialogrutan Skapa nytt... .In the Microsoft Azure Publish Settings dialog, select Create New….
  4. I den skapa Molntjänsten och Lagringskontot dialogrutan, ange en namn (till exempel ”WadExample”) och välj en region eller tillhörighetsgrupp.In the Create Cloud Service and Storage Account dialog, enter a Name (for example, "WadExample") and select a region or affinity group.
  5. Ange den miljö till mellanlagring.Set the Environment to Staging.
  6. Ändra någon annan inställningar som är lämpliga och klicka på publicera.Modify any other Settings as appropriate and click Publish.
  7. När distributionen är klar kontrollerar du i Azure-portalen som din molntjänst tillhör en kör tillstånd.After deployment has completed, verify in the Azure portal that your cloud service is in a Running state.

Steg 4: Skapa konfigurationsfilen diagnostik och installera tilläggetStep 4: Create your Diagnostics configuration file and install the extension

  1. Hämta offentliga konfiguration filen schemadefinitionen genom att köra följande PowerShell-kommando:Download the public configuration file schema definition by executing the following PowerShell command:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Lägg till en XML-fil till din WorkerRole1 projektet genom att högerklicka på den WorkerRole1 projektet och välj Lägg till -> nytt objekt...Add an XML file to your WorkerRole1 project by right-clicking on the WorkerRole1 project and select Add -> New Item… -> *Visual C#-objekt* -> *Data* -> *XML-filen*. -> *Visual C# items* -> *Data* -> *XML File*. Namn på filen ”WadExample.xml”.Name the file "WadExample.xml".

    CloudServices_diag_add_xml

  3. Koppla WadConfig.xsd konfigurationsfilen.Associate the WadConfig.xsd with the configuration file. Kontrollera att WadExample.xml editor-fönstret är det aktiva fönstret.Make sure the WadExample.xml editor window is the active window. Tryck på F4 att öppna den egenskaper fönster.Press F4 to open the Properties window. Klicka på den scheman -egenskapen i den egenskaper fönster.Click the Schemas property in the Properties window. Klicka på den ...Click the i den scheman egenskapen.in the Schemas property. Klicka på Lägg …Click the Add… knappen och navigera till den plats där du sparade XSD-filen och välj filen WadConfig.xsd.button and navigate to the location where you saved the XSD file and select the file WadConfig.xsd. Klicka på OK.Click OK.

  4. Ersätt innehållet i konfigurationsfilen WadExample.xml med följande XML-filen och spara filen.Replace the contents of the WadExample.xml configuration file with the following XML and save the file. Den här konfigurationsfilen definierar ett par prestandaräknare för att samla in: en för CPU-användning och en för minnesanvändning.This configuration file defines a couple performance counters to collect: one for CPU utilization and one for memory utilization. Konfigurationen definierar de fyra händelser som motsvarar metoderna i klassen SampleEventSourceWriter.Then the configuration defines the four events corresponding to the methods in the SampleEventSourceWriter class.

<?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 ArbetsrollStep 5: Install Diagnostics on your Worker Role

PowerShell-cmdletar för att hantera diagnostik för en web- eller worker-roll är: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension och ta bort AzureServiceDiagnosticsExtension.The PowerShell cmdlets for managing Diagnostics on a web or worker role are: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension, and Remove-AzureServiceDiagnosticsExtension.

  1. Öppna Azure PowerShell.Open Azure PowerShell.
  2. Kör skriptet för att installera diagnostik på worker-roll (Ersätt StorageAccountKey med lagringskontots åtkomstnyckel för lagringskontot wadexample och config_path med sökvägen till WadExample.xml fil):Execute the script to install Diagnostics on your worker role (replace StorageAccountKey with the storage account key for your wadexample storage account and config_path with the path to the WadExample.xml file):
$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: Visa telemetridataStep 6: Look at your telemetry data

I Visual Studio Server Explorer, navigera till wadexample storage-konto.In the Visual Studio Server Explorer, navigate to the wadexample storage account. När Molntjänsten har körts cirka fem (5) minuter, bör du se tabellerna WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable och WADSetOtherTable.After the cloud service has been running about five (5) minutes, you should see the tables WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable and WADSetOtherTable. Dubbelklicka på någon av tabellerna visar den telemetri som har samlats in.Double-click one of the tables to view the telemetry that has been collected.

CloudServices_diag_tables

Filen konfigurationsschemaConfiguration File Schema

Konfigurationsfilen diagnostik definierar värden som används för att initiera diagnostiska inställningar när diagnostics-agenten startar.The Diagnostics configuration file defines values that are used to initialize diagnostic configuration settings when the diagnostics agent starts. Se den senaste Schemareferens giltiga värden och exempel.See the latest schema reference for valid values and examples.

FelsökningTroubleshooting

Om du har problem med att se felsökning av Azure Diagnostics hjälp med vanliga problem.If you have trouble, see Troubleshooting Azure Diagnostics for help with common problems.

Nästa stegNext Steps

Visa en lista över relaterade Azure VM-diagnostik artiklar felsökning om du vill ändra de data som du kan samla in, eller Läs mer om diagnostik i allmänhet.See a list of related Azure virtual-machine diagnostic articles to change the data you are collecting, troubleshoot problems or learn more about diagnostics in general.