Freigeben über


Aktivieren der Azure-Diagnose in Azure Cloud Services (klassisch)

Wichtig

Cloud Services (klassisch) ist jetzt ab dem 1. September 2024 für alle Kunden veraltet. Alle vorhandenen ausgeführten Bereitstellungen werden beendet und von Microsoft heruntergefahren, und die Daten sind ab Oktober 2024 dauerhaft verloren. In neuen Bereitstellungen sollte das neue auf Azure Resource Manager basierende Bereitstellungsmodell für Azure Cloud Services (erweiterter Support) verwendet werden.

Hintergrundinformationen über Azure-Diagnose finden Sie unter Übersicht über Azure-Diagnose .

** So aktivieren Sie die Diagnostik in einer Worker-Rolle

In dieser Anleitung wird beschrieben, wie Sie eine Azure-Workerrolle implementieren, die mithilfe der .NET-EventSource-Klasse Telemetriedaten ausgibt. Die Telemetriedaten werden mit der Azure-Diagnose erfasst und in einem Azure-Speicherkonto gespeichert. Wenn Sie eine Worker-Rolle erstellen, aktiviert Visual Studio automatisch Diagnose 1.0 als Teil der Lösung in Azure SDKs (Software Development Kits) für .NET 2.4 und vorherige Versionen. In den folgenden Anweisungen wird beschrieben, wie Sie die Arbeiterrolle erstellen, Diagnose 1.0 aus der Lösung deaktivieren und Diagnose 1.2 oder 1.3 in Ihrer Arbeiterrolle bereitstellen.

Voraussetzungen

In diesem Artikel wird davon ausgegangen, dass Sie über ein Azure-Abonnement verfügen und Visual Studio mit dem Azure-SDK verwenden. Falls Sie nicht über ein Azure-Abonnement verfügen, können Sie sich für die kostenlose Testversion registrieren. Installieren und konfigurieren Sie Azure PowerShell Version 0.8.7 oder höher.

Schritt 1: Erstellen einer Arbeiterrolle

  1. Starten Sie Visual Studio.
  2. Erstellen Sie ein Azure Cloud Service-Projekt mithilfe der Cloudvorlage für .NET Framework 4.5. Geben Sie dem Projekt den Namen „WadExample“, und wählen Sie „OK“ aus.
  3. Wählen Sie Worker Role aus und klicken Sie auf OK. Das Projekt wurde erstellt.
  4. Doppelklicken Sie im Projektmappen-Explorer auf die Eigenschaften-Datei von WorkerRole1.
  5. Deaktivieren Sie auf der Registerkarte Konfiguration die Option Diagnose aktivieren, um Diagnose 1.0 (Azure SDK 2.4 und früher) zu deaktivieren.
  6. Bauen Sie Ihre Lösung, um zu überprüfen, dass keine Fehler vorliegen.

Schritt 2: Den Code instrumentieren

Ersetzen Sie den Inhalt von "WorkerRole.cs" durch den folgenden Code. Die von der EventSource-Klasse geerbte SampleEventSourceWriter-Klasse implementiert vier Protokollierungsmethoden: SendEnums, MessageMethod, SetOther und HighFreq. Der erste Parameter für die WriteEvent -Methode definiert die ID für das betreffende Ereignis. Die Run-Methode implementiert eine Endlosschleife, die jede der in der SampleEventSourceWriter -Klasse implementierten Protokollierungsmethoden alle 10 Sekunden aufruft.

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

Schritt 3: Bereitstellen der Worker-Rolle

Warnung

Wenn Sie die Diagnose für eine vorhandene Rolle aktivieren, werden alle Erweiterungen, die Sie festgelegt haben, beim Bereitstellen des Pakets deaktiviert. Dazu gehören:

  • Microsoft Monitoring Agent-Diagnoseprogramm
  • Microsoft Azure-Sicherheitsüberwachung
  • Microsoft Antischadsoftware
  • Microsoft Monitoring Agent (Überwachungsdienst)
  • Microsoft-Dienst-Profiler-Agent
  • Windows Azure-Domänenerweiterung
  • Windows Azure-Diagnoseerweiterung
  • Windows Azure Remote-Desktop-Erweiterung
  • Windows Azure Protokollsammler

Sie können Ihre Erweiterungen über das Azure-Portal oder PowerShell zurücksetzen, nachdem Sie die aktualisierte Rolle bereitgestellt haben.

  1. Bereitstellen Ihrer Workerrolle in Azure über Visual Studio, indem Sie im Projektmappen-Explorer das Projekt WadExample auswählen und anschließend im Menü Build auf Veröffentlichen klicken.
  2. Wählen Sie Ihr Abonnement aus.
  3. Wählen Sie im Dialogfeld Microsoft Azure-Veröffentlichungseinstellungen die Option Neu erstellen aus.
  4. Geben Sie im Dialogfeld Clouddienst und Speicherkonto erstellen im Feld Name einen Namen ein (z.B. „WadExample“), und wählen Sie eine Region oder Affinitätsgruppe aus.
  5. Legen Sie die Umgebung auf Testumgebung fest.
  6. Ändern Sie weitere Einstellungen nach Bedarf, und wählen Sie dann Veröffentlichen aus.
  7. Überprüfen Sie nach Abschluss der Bereitstellung im Azure-Portal, ob Ihr Clouddienst den Status Wird ausgeführt aufweist.

Schritt 4: Erstellen der Diagnosekonfigurationsdatei und Installieren der Erweiterung

  1. Laden Sie die Schemadefinition für die öffentliche Konfigurationsdatei mit dem folgenden PowerShell-Befehl herunter:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Fügen Sie Ihrem Projekt WorkerRole1 eine XML-Datei hinzu. Klicken Sie dazu mit der rechten Maustaste auf das Projekt WorkerRole1, und wählen Sie Hinzufügen ->Neues Element… ->Visual C#-Elemente ->Daten ->XML-Datei aus. Nennen Sie die Datei WadExample.xml.

    CloudServices_diag_add_xml

  3. Ordnen Sie die Datei "WadConfig.xsd" der Konfigurationsdatei zu. Stellen Sie sicher, dass das Editorfenster mit "WadExample.xml" das aktive Fenster ist. Drücken Sie die Taste F4, um das Fenster Eigenschaften zu öffnen. Wählen Sie im Fenster Eigenschaften die Schemas-Eigenschaft aus. Wählen Sie in der Schemas-Eigenschaft die Option aus. Wählen Sie die Schaltfläche Hinzufügen … aus, navigieren Sie zum Speicherort der XSD-Datei, und wählen Sie die Datei „WadConfig.xsd“ aus. Wählen Sie OK aus.

  4. Ersetzen Sie den Inhalt der Konfigurationsdatei "WadExample.xml" durch den folgenden XML-Code, und speichern Sie die Datei. Diese Konfigurationsdatei definiert ein Paar zu erfassender Leistungsindikatoren: einen für die CPU-Auslastung und einen für die Speicherauslastung. Außerdem werden in der Konfiguration vier Ereignisse definiert, die den Methoden in der SampleEventSourceWriter-Klasse entsprechen.

<?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>

Schritt 5: Diagnosetools auf Ihrer Worker-Rolle installieren

Für die Verwaltung der Diagnostik in einer Web- oder Workerrolle werden die folgenden PowerShell-Cmdlets verwendet: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension und Remove-AzureServiceDiagnosticsExtension.

  1. Öffnen Sie Azure PowerShell.
  2. Führen Sie das Skript zum Installieren der Diagnose in Ihrer Workerrolle aus. Ersetzen Sie dabei StorageAccountKey durch den Speicherkontoschlüssel für Ihr wadexample-Speicherkonto und config_path durch den Pfad zur Datei WadExample.xml:
$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

Schritt 6: Betrachten der Telemetriedaten

Navigieren Sie in Visual Studio im Server-Explorer zum Speicherkonto „wadexample“. Wenn der Clouddienst etwa fünf (5) Minuten lang ausgeführt wurde, sollten die Tabellen WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable und WADSetOtherTable angezeigt werden. Doppelklicken Sie auf eine der Tabellen, um die erfassten Telemetriedaten anzuzeigen.

CloudServices_diag_tables

Konfigurationsdateischema

Die Diagnosekonfigurationsdatei definiert Werte, die verwendet werden, um beim Start des Diagnoseagenten die Diagnosekonfigurationseinstellungen zu initialisieren. Siehe die aktuelle Schemareferenz für gültige Werte und Beispiele.

Problembehandlung

Wenn Sie Schwierigkeiten haben, sehen Sie unter Fehlerbehebung bei Azure-Diagnostik nach, um Hilfe bei häufigen Problemen zu erhalten.

Nächste Schritte

In der Liste der Artikel zur Azure-Diagnose im Zusammenhang mit virtuellen Computern finden Sie eine Anleitung zum Ändern erfasster Daten und zur Problembehandlung und erfahren mehr über Diagnose im Allgemeinen.