Delen via


Azure Diagnostics inschakelen in Azure Cloud Services (klassiek)

Belangrijk

Cloud Services (klassiek) is vanaf 1 september 2024 afgeschaft voor alle klanten. Bestaande actieve implementaties worden gestopt en afgesloten door Microsoft en de gegevens gaan vanaf oktober 2024 permanant verloren. Nieuwe implementaties moeten gebruikmaken van het nieuwe op Azure Resource Manager gebaseerde implementatiemodel Azure Cloud Services (uitgebreide ondersteuning).

Zie Overzicht van Azure Diagnostics voor een achtergrond in Azure Diagnostics.

Diagnostische gegevens inschakelen in een werkrol

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

Vereisten

In dit artikel wordt ervan uitgegaan dat u een Azure-abonnement hebt en Visual Studio gebruikt 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 gericht op .NET Framework 4.5. Geef het project de naam 'WadExample' en selecteer OK.
  3. Selecteer Werkrol en selecteer OK. Het project wordt gemaakt.
  4. Dubbelklik in Solution Explorer op het eigenschappenbestand WorkerRole1 .
  5. Schakel op het tabblad Configuratie het selectievakje 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 u geen fouten hebt.

Stap 2: Uw code instrumenteer

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 WriteEvent-methode definieert de id voor de respectieve gebeurtenis. De methode Run implementeert een oneindige lus die elke 10 seconden elk van de logboekregistratiemethoden aanroept die zijn geïmplementeerd in de klasse SampleEventSourceWriter .

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 extensies die u al hebt ingesteld uitgeschakeld wanneer het pakket wordt geïmplementeerd. Deze omvatten:

  • Diagnostische gegevens van Microsoft Monitoring Agent
  • Microsoft Azure-beveiligingsbewaking
  • Microsoft Antimalware
  • Microsoft Monitoring Agent
  • Microsoft Service Profiler Agent
  • Windows Azure-domeinextensie
  • Windows Azure Diagnostics-extensie
  • Windows Azure Remote Desktop-extensie
  • Windows Azure-logboekverzamelaar

U kunt uw extensies opnieuw instellen via Azure Portal of PowerShell nadat u de bijgewerkte rol hebt geïmplementeerd.

  1. Implementeer uw werkrol in Azure vanuit Visual Studio door het WadExample-project in Solution Explorer te selecteren en vervolgens te publiceren vanuit het menu Build .
  2. Kies uw abonnement.
  3. Selecteer In het dialoogvenster Publicatie-instellingen van Microsoft Azure de optie Nieuwe maken....
  4. Voer in het dialoogvenster Cloudservice en opslagaccount maken een naam in (bijvoorbeeld 'WadExample') en selecteer een regio of affiniteitsgroep.
  5. Stel de omgeving in op Fasering.
  6. Wijzig eventueel andere instellingen en selecteer 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 workerRole1-project te klikken en ->Nieuw item toevoegen... ->Visual C#-items ->Data ->XML-bestand te selecteren. Noem het bestand WadExample.xml.

    CloudServices_diag_add_xml

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

  4. Vervang de inhoud van het WadExample.xml configuratiebestand door de volgende XML en sla het bestand op. Dit configuratiebestand definieert een aantal prestatiemeteritems 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 voor 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 wadexample-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 in Visual Studio Server Explorer naar het wadexample-opslagaccount. Nadat de cloudservice ongeveer vijf (5) minuten heeft uitgevoerd, ziet u de tabellen WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable en WADSetOtherTable. Dubbelklik op een van de tabellen om de verzamelde telemetrie weer te geven.

CloudServices_diag_tables

Configuratiebestandsschema

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

Probleemoplossing

Als u problemen ondervindt, raadpleegt u Problemen met Azure Diagnostics oplossen voor hulp bij veelvoorkomende problemen.

Volgende stappen

Bekijk een lijst met gerelateerde diagnostische artikelen over virtuele Azure-machines om de gegevens te wijzigen die u verzamelt, problemen op te lossen of meer te weten te komen over diagnostische gegevens in het algemeen.