Abilitazione di Diagnostica di Azure in servizi cloud di AzureEnabling Azure Diagnostics in Azure Cloud Services

Vedere Cenni preliminari sulla diagnostica di Azure per un background sulla diagnostica di Azure.See Azure Diagnostics Overview for a background on Azure Diagnostics.

Come abilitare la diagnostica in un ruolo di lavoroHow to Enable Diagnostics in a Worker Role

Questa procedura dettagliata descrive come implementare un ruolo di lavoro di Azure che emette i dati di telemetria con la classe EventSource .NET.This walkthrough describes how to implement an Azure worker role that emits telemetry data using the .NET EventSource class. Il modulo Diagnostica Azure viene usato per raccogliere i dati di telemetria e memorizzarli in un account di archiviazione di Azure.Azure Diagnostics is used to collect the telemetry data and store it in an Azure storage account. Quando si crea un ruolo di lavoro, Visual Studio abilita automaticamente Diagnostica 1.0 come parte della soluzione in Azure SDK per .NET 2.4 e versioni precedenti.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. Le seguenti istruzioni descrivono il processo per creare il ruolo di lavoro, disabilitare Diagnostica 1.0 dalla soluzione e implementare Diagnostica 1.2 o 1.3 nel ruolo di lavoro.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.

prerequisitiPrerequisites

In questo articolo si presuppone che l'utente disponga di una sottoscrizione di Azure e che usi Visual Studio con Azure SDK.This article assumes you have an Azure subscription and are using Visual Studio with the Azure SDK. Se non si ha una sottoscrizione di Azure, è possibile ottenere una versione di prova gratuita.If you do not have an Azure subscription, you can sign up for the Free Trial. Assicurarsi di installare e configurare Azure PowerShell versione 0.8.7 o successiva.Make sure to Install and configure Azure PowerShell version 0.8.7 or later.

Passaggio 1: Creare un ruolo di lavoroStep 1: Create a Worker Role

  1. Avviare Visual Studio.Launch Visual Studio.
  2. Creare un progetto Servizio cloud di Azure dal modello Cloud per .NET Framework 4.5.Create an Azure Cloud Service project from the Cloud template that targets .NET Framework 4.5. Assegnare al progetto il nome "WadExample" e fare clic su OK.Name the project "WadExample" and click Ok.
  3. Selezionare Ruolo di lavoro e fare clic su OK.Select Worker Role and click Ok. Verrà creato il progetto.The project will be created.
  4. In Esplora soluzioni fare doppio clic sul file delle proprietà WorkerRole1.In Solution Explorer, double-click the WorkerRole1 properties file.
  5. Nella scheda Configurazione deselezionare Abilita diagnostica per disabilitare Diagnostica 1.0 (Azure SDK 2.4 e versioni precedenti).In the Configuration tab, un-check Enable Diagnostics to disable Diagnostics 1.0 (Azure SDK 2.4 and earlier).
  6. Compilare la soluzione per verificare che non ci siano errori.Build your solution to verify that you have no errors.

Passaggio 2: Instrumentare il codiceStep 2: Instrument your code

Sostituire il contenuto del file WorkerRole.cs con il codice seguente.Replace the contents of WorkerRole.cs with the following code. La classe SampleEventSourceWriter, ereditata dalla classe EventSource, implementa quattro metodi di registrazione: SendEnums, MessageMethod, SetOther e HighFreq.The class SampleEventSourceWriter, inherited from the EventSource Class, implements four logging methods: SendEnums, MessageMethod, SetOther and HighFreq. Il primo parametro per il metodo WriteEvent definisce l'ID per il rispettivo evento.The first parameter to the WriteEvent method defines the ID for the respective event. Il metodo Run implementa un ciclo infinito che chiama ognuno dei metodi di registrazione implementati nella classe SampleEventSourceWriter ogni 10 secondi.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 http://go.microsoft.com/fwlink/?LinkId=166357.

            return base.OnStart();
        }
    }
}

Passaggio 3: Distribuire il ruolo di lavoroStep 3: Deploy your Worker Role

Avviso

Quando si abilita la diagnostica per un ruolo esistente, tutte le estensioni già impostate vengono disabilitate quando viene distribuito il pacchetto.When you enable diagnostics for an existing role, any extensions that you have already set are disabled when the package is deployed. incluse le seguenti:These include:

  • Diagnostica di Microsoft Monitoring AgentMicrosoft Monitoring Agent Diagnostics
  • Microsoft Azure Security MonitoringMicrosoft Azure Security Monitoring
  • Antimalware MicrosoftMicrosoft Antimalware
  • Microsoft Monitoring AgentMicrosoft Monitoring Agent
  • Microsoft Service Profiler AgentMicrosoft Service Profiler Agent
  • Windows Azure Domain ExtensionWindows Azure Domain Extension
  • Windows Azure Diagnostics ExtensionWindows Azure Diagnostics Extension
  • Windows Azure Remote Desktop ExtensionWindows Azure Remote Desktop Extension
  • Windows Azure Log CollectorWindows Azure Log Collector

Dopo avere distribuito il ruolo aggiornato, è possibile reimpostare le estensioni tramite il portale di Azure o PowerShell.You can reset your extensions via the Azure portal or PowerShell after you deploy the updated role.

  1. Distribuire il ruolo di lavoro in Azure da Visual Studio selezionando il progetto WadExample in Esplora soluzioni e quindi scegliendo Pubblica dal menu Compila.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. Scegliere la propria sottoscrizione.Choose your subscription.
  3. Nella finestra di dialogo Impostazioni di pubblicazione Microsoft Azure selezionare Crea nuovo.In the Microsoft Azure Publish Settings dialog, select Create New….
  4. Nella finestra di dialogo Crea servizio cloud e account di archiviazione immettere un valore in Nome (ad esempio, "WadExample") e selezionare un'area o un gruppo di affinità.In the Create Cloud Service and Storage Account dialog, enter a Name (for example, "WadExample") and select a region or affinity group.
  5. Impostare Ambiente su Gestione temporanea.Set the Environment to Staging.
  6. Modificare le altre impostazioni nel modo appropriato e fare clic su Pubblica.Modify any other Settings as appropriate and click Publish.
  7. Al termine della distribuzione, verificare nel portale di Azure che lo stato del servizio cloud sia In esecuzione.After deployment has completed, verify in the Azure portal that your cloud service is in a Running state.

Passaggio 4: Creare il file di configurazione della diagnostica e installare l'estensioneStep 4: Create your Diagnostics configuration file and install the extension

  1. Scaricare la definizione dello schema del file di configurazione pubblico eseguendo il comando PowerShell seguente: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. Aggiungere un file XML al progetto WorkerRole1 facendo clic con il pulsante destro del mouse sul progetto WorkerRole1 e scegliendo Aggiungi -> Nuovo elementoAdd an XML file to your WorkerRole1 project by right-clicking on the WorkerRole1 project and select Add -> New Item… -> Elementi di Visual C# -> Dati -> File XML. -> Visual C# items -> Data -> XML File. Assegnare al file il nome "WadExample.xml".Name the file "WadExample.xml".

    CloudServices_diag_add_xml

  3. Associare WadConfig.xsd al file di configurazione.Associate the WadConfig.xsd with the configuration file. Assicurarsi che la finestra dell'editor di WadExample.xml sia la finestra attiva.Make sure the WadExample.xml editor window is the active window. Premere F4 per aprire la finestra Proprietà.Press F4 to open the Properties window. Fare clic sulla proprietà Schemi nella finestra Proprietà.Click the Schemas property in the Properties window. Fare clic su ...Click the in the Schemi .in the Schemas property. Fare clic su AggiungiClick the Add… , passare al percorso in cui si è salvato il file XSD e selezionare il file WadConfig.xsd.button and navigate to the location where you saved the XSD file and select the file WadConfig.xsd. Fare clic su OK.Click OK.

  4. Sostituire i contenuti del file di configurazione WadExample.xml con il codice XML seguente e salvare il file.Replace the contents of the WadExample.xml configuration file with the following XML and save the file. Questo file di configurazione definisce due contatori delle prestazioni per la raccolta: uno per l'uso della CPU e uno per l'uso della memoria.This configuration file defines a couple performance counters to collect: one for CPU utilization and one for memory utilization. La configurazione definisce quindi quattro eventi corrispondenti ai metodi della classe 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>

Passaggio 5: Installare la diagnostica nel ruolo di lavoroStep 5: Install Diagnostics on your Worker Role

I cmdlet di PowerShell per la gestione della diagnostica in un ruolo Web o di lavoro sono: : Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension e Remove-AzureServiceDiagnosticsExtension.The PowerShell cmdlets for managing Diagnostics on a web or worker role are: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension, and Remove-AzureServiceDiagnosticsExtension.

  1. Aprire Azure PowerShell.Open Azure PowerShell.
  2. Eseguire lo script per installare la diagnostica nel ruolo di lavoro (sostituire StorageAccountKey con la chiave dell'account di archiviazione di wadexample e config_path con il percorso del file WadExample.xml):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

Passaggio 6: Esaminare i dati di telemetriaStep 6: Look at your telemetry data

In Esplora server di Visual Studio passare all'account di archiviazione di wadexample.In the Visual Studio Server Explorer, navigate to the wadexample storage account. Dopo cinque (5) minuti dall'inizio dell'esecuzione del servizio cloud, dovrebbero essere visualizzate le tabelle WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable e WADSetOtherTable.After the cloud service has been running about five (5) minutes, you should see the tables WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable and WADSetOtherTable. Fare doppio clic su una delle tabelle per visualizzare i dati di telemetria raccolti.Double-click one of the tables to view the telemetry that has been collected.

CloudServices_diag_tables

Schema del file di configurazioneConfiguration File Schema

Il file di configurazione della diagnostica definisce i valori usati per inizializzare le impostazioni di diagnostica quando viene avviato il monitor di diagnostica.The Diagnostics configuration file defines values that are used to initialize diagnostic configuration settings when the diagnostics agent starts. Vedere il riferimento allo schema più recente per i valori validi ed alcuni esempi.See the latest schema reference for valid values and examples.

risoluzione dei problemiTroubleshooting

Se si verificano problemi, vedere l'argomento relativo alla risoluzione dei problemi di Diagnostica di Azure per informazioni sui problemi comuni.If you have trouble, see Troubleshooting Azure Diagnostics for help with common problems.

Passaggi successiviNext Steps

Vedere un elenco di articoli correlati sulla diagnostica delle macchine virtuali di Azure per modificare i dati raccolti, risolvere i problemi o ottenere altre informazioni sulla diagnostica in generale.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.