Inschakelen Azure Diagnostics in Azure Cloud Services (klassiek)

Belangrijk

Azure Cloud Services (uitgebreide ondersteuning) is een nieuw Azure Resource Manager implementatiemodel voor het Azure Cloud Services product.Met deze wijziging hebben Azure Cloud Services die worden uitgevoerd op het implementatiemodel op basis van Azure Service Manager de naam Cloud Services (klassiek) en moeten alle nieuwe implementaties gebruikmaken van Cloud Services (uitgebreide ondersteuning).

Zie Azure Diagnostics Overzicht voor achtergrondinformatie over Azure Diagnostics.

Diagnostische gegevens inschakelen in een werkrol

In dit scenario wordt beschreven hoe u een Azure-werkrol implementeert die telemetriegegevens implementeert met behulp van de .NET EventSource-klasse. Azure Diagnostics wordt gebruikt om de telemetriegegevens te verzamelen en op te slaan in een Azure-opslagaccount. Wanneer u een werkrol maakt, Visual Studio automatisch Diagnostics 1.0 in als onderdeel van de oplossing in Azure SDK's voor .NET 2.4 en eerder. In de volgende instructies wordt het proces beschreven voor het maken van de werkrol, het uitschakelen van Diagnostics 1.0 uit de oplossing en het implementeren van Diagnostische gegevens 1.2 of 1.3 op uw werkrol.

Vereisten

In dit artikel wordt ervan uitgenomen dat u een Azure-abonnement hebt en gebruik Visual Studio met de Azure SDK. Als u geen Azure-abonnement hebt, kunt u zich registreren voor de gratis proefversie. Zorg ervoor dat u Azure PowerShell versie 0.8.7 of hoger installeert en configureert.

Stap 1: een werkrol maken

  1. Start Visual Studio.
  2. Maak een Azure Cloud Service-project op basis van de cloudsjabloon die is .NET Framework 4.5. Noem het project 'WadExample' en klik op OK.
  3. Selecteer Werkrol en klik op OK. Het project wordt gemaakt.
  4. Dubbelklik Solution Explorer in het eigenschappenbestand WorkerRole1.
  5. Schakel op het tabblad Configuratie de optie Diagnostische gegevens inschakelen uit om Diagnostics 1.0 (Azure SDK 2.4 en eerder) uit te schakelen.
  6. Bouw uw oplossing om te controleren of er geen fouten zijn.

Stap 2: uw code instrumentatie

Vervang de inhoud van WorkerRole.cs door de volgende code. De klasse SampleEventSourceWriter, overgenomen van de EventSource-klasse, implementeert vier logboekregistratiemethoden: SendEnums, MessageMethod, SetOther en HighFreq. De eerste parameter voor de methode WriteEvent definieert de id voor de respectieve gebeurtenis. De run-methode implementeert een oneindige lus die elke 10 seconden elk van de logboekregistratiemethoden aanroept die in de klasse SampleEventSourceWriter zijn geïmplementeerd.

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();
        }
    }
}

Stap 3: uw werkrol implementeren

Waarschuwing

Wanneer u Diagnostische gegevens inschakelt voor een bestaande rol, worden alle uitbrei dingen die u al hebt ingesteld, uitgeschakeld wanneer het pakket wordt geïmplementeerd. Deze omvatten:

  • Diagnostische gegevens van micro soft Monitoring Agent
  • Beveiligings bewaking Microsoft Azure
  • Microsoft Antimalware
  • Microsoft Monitoring Agent
  • Micro soft Service Profiler-agent
  • Windows Azure-domein extensie
  • Extensie voor Windows-Azure Diagnostics
  • Uitbrei ding voor Windows Azure Extern bureaublad
  • Windows Azure-logboek verzamelaar

Nadat u de bijgewerkte rol hebt geïmplementeerd, kunt u de uitbrei dingen opnieuw instellen via de Azure Portal of Power shell.

  1. Implementeer uw werkrol in Azure vanuit Visual Studio door het project WadExample te selecteren in de Solution Explorer vervolgens Publiceren in het menu Build.
  2. Kies uw abonnement.
  3. Selecteer in Microsoft Azure dialoogvenster Instellingen publiceren de optie Nieuwe maken....
  4. Voer in het dialoogvenster Cloudservice Storage account maken een naam in (bijvoorbeeld 'WadExample') en selecteer een regio of affiniteitsgroep.
  5. Stel de Omgeving in op Fasering.
  6. Wijzig waar nodig Instellingen andere gegevens en klik op Publiceren.
  7. Nadat de implementatie is voltooid, controleert u in Azure Portal of uw cloudservice de status Actief heeft.

Stap 4: maak uw diagnostische configuratiebestand en installeer de extensie

  1. Download de schemadefinitie van het openbare configuratiebestand door de volgende PowerShell-opdracht uit te voeren:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Voeg een XML-bestand toe aan uw WorkerRole1-project door met de rechtermuisknop op het project WorkerRole1 te klikken en Nieuw -> item toevoegen... te selecteren. -> Visual C#-items -> Gegevens -> XML-bestand. Noem het bestand 'WadExample.xml'.

    CloudServices_diag_add_xml

  3. Koppel de WadConfig.xsd aan het configuratiebestand. Zorg ervoor dat WadExample.xml editorvenster het actieve venster is. Druk op F4 om het venster Eigenschappen te openen. Klik op de eigenschap Schema's in het venster Eigenschappen. Klik op de ... in de eigenschap Schema's. Klik op de knop Toevoegen... en navigeer naar de locatie waar u het XSD-bestand hebt opgeslagen en selecteer het bestand WadConfig.xsd. Klik op OK.

  4. Vervang de inhoud van het WadExample.xml-configuratiebestand door de volgende XML en sla het bestand op. Dit configuratiebestand definieert een aantal prestatiemeters die moeten worden verzameld: één voor CPU-gebruik en één voor geheugengebruik. Vervolgens definieert de configuratie de vier gebeurtenissen die overeenkomen met de methoden in de klasse 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>

Stap 5: Diagnostische gegevens installeren op uw werkrol

De PowerShell-cmdlets voor het beheren van diagnostische gegevens op een web- of werkrol zijn: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension en Remove-AzureServiceDiagnosticsExtension.

  1. Open Azure PowerShell.
  2. Voer het script uit om Diagnostische gegevens te installeren op uw werkrol (vervang StorageAccountKey door de opslagaccountsleutel voor uw opslagaccount en config_path door het pad naar het WadExample.xml-bestand):
$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

Stap 6: uw telemetriegegevens bekijken

Navigeer Visual Studio Server Explorer in het Visual Studio naar het opslagaccount met de veelhoek. Nadat de cloudservice ongeveer vijf (5) minuten wordt uitgevoerd, ziet u de tabellen WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable en WADSetOtherTable. Dubbelklik op een van de tabellen om de verzamelde telemetrie te bekijken.

CloudServices_diag_tables

Configuratiebestandsschema

Het configuratiebestand Diagnostische gegevens definieert waarden die worden gebruikt voor het initialiseren van diagnostische configuratie-instellingen wanneer de diagnostische agent wordt gestart. Zie de meest recente schemaverwijzing voor geldige waarden en voorbeelden.

Problemen oplossen

Als u problemen hebt, zie Problemen met Azure Diagnostics voor hulp bij veelvoorkomende problemen.

Volgende stappen

Bekijk een lijst met gerelateerde diagnostische artikelen over virtuele Azure-machines voor het wijzigen van de gegevens die u verzamelt, het oplossen van problemen of meer informatie over diagnostische gegevens in het algemeen.