Application Insights für Azure Cloud Services

Application Insights kann Azure Cloud Services-Apps auf Verfügbarkeit, Leistung, Fehler und Verwendung überwachen. Dabei werden Daten aus den Application Insights-SDKs mit Daten der Azure-Diagnose aus Cloud Services kombiniert. Mit dem Feedback zur Leistung und Effektivität der App in der Praxis können Sie in jedem Entwicklungslebenszyklus eine fundierte Entscheidung für die Richtung des Entwurfs treffen.

Übersichtsdashboard

Hinweis

Am 31. März 2025 wird der Support für die auf Instrumentierungsschlüsseln basierende Erfassung eingestellt. Die Erfassung von Instrumentierungsschlüsseln funktioniert zwar weiterhin, wir stellen jedoch keine Updates und keinen Support mehr für das Feature bereit. Wechseln Sie zu Verbindungszeichenfolgen, damit Sie neue Funktionen nutzen können.

Voraussetzungen

Bevor Sie beginnen, benötigen Sie Folgendes:

  • Ein Azure-Abonnement.

    Anmeldung mit Ihrem Microsoft-Konto für Windows, Xbox Live oder andere Microsoft-Clouddienste.

  • Microsoft Azure-Tools 2.9 oder höher.

  • Developer Analytics Tools 7.10 oder höher.

Schneller Einstieg

Am schnellsten und einfachsten können Sie Ihren Clouddienst mit Application Insights überwachen, wenn Sie diese Option beim Veröffentlichen des Diensts in Azure auswählen.

Seite mit Beispiel für Diagnoseeinstellungen

Mit dieser Option wird die App zur Laufzeit instrumentiert, sodass Sie alle erforderlichen Telemetriedaten zum Überwachen von Anforderungen, Ausnahmen und Abhängigkeiten in Ihrer Webrolle erhalten. Leistungsindikatoren aus Ihren Workerrollen werden ebenfalls überwacht. Auch alle von Ihrer App generierten Diagnoseablaufverfolgungen werden an Application Insights gesendet.

Wenn Sie nur diese Option benötigen, sind Sie fertig.

Die nächsten Schritte sind: Anzeigen von Metriken aus der App und Abfragen von Daten mit Analytics.

Zur Überwachung der Leistung im Browser sollten Sie Verfügbarkeitstests einrichten und Ihren Webseiten Code hinzufügen.

In den nächsten Abschnitten werden die folgenden zusätzlichen Optionen erläutert:

  • Senden von Daten aus verschiedenen Komponenten und Erstellen von Konfigurationen zum Trennen von Ressourcen
  • Hinzufügen von benutzerdefinierten Telemetriedaten aus der App

Mit Application Insights instrumentierte Beispiel-App

In dieser Beispiel-App wird Application Insights einem Clouddienst mit zwei in Azure gehosteten Workerrollen hinzugefügt.

Im nächsten Abschnitt erfahren Sie, wie Sie Ihr eigenes Clouddienstprojekt auf die gleiche Weise anpassen können.

Planen von Ressourcen und Ressourcengruppen

Die Telemetriedaten aus Ihrer App werden in einer Azure-Ressource vom Typ Application Insights gespeichert, analysiert und angezeigt.

Jede Ressource gehört jeweils zu einer Ressourcengruppe. Ressourcengruppen werden zum Verwalten von Kosten, zum Gewähren des Zugriffs für Teammitglieder und zum Bereitstellen von Updates in einer koordinierten Transaktion verwendet. Beispielsweise können Sie ein Skript zum Bereitstellen eines Azure-Clouddiensts und der zugehörigen Application Insights-Überwachungsressourcen in einem kombinierten Vorgang schreiben.

Ressourcen für Komponenten

Es wird empfohlen, dass Sie eine Dimensionseigenschaft zu jedem Telemetrieelement hinzufügen, mit der die Quellrolle identifiziert wird. In diesem Ansatz wird in Metrikdiagrammen (z.B. Ausnahmen) normalerweise eine Aggregation der Zählungen aus den unterschiedlichen Rollen angezeigt. Sie können jedoch das Diagramm bei Bedarf nach Rollenbezeichnern segmentieren. Suchvorgänge können auch nach der gleichen Dimension gefiltert werden. Mit dieser Alternative können alle Daten etwas einfacher gleichzeitig angezeigt werden, es kann jedoch zu einer gewissen Verwirrung im Hinblick auf die Rollen führen.

Browsertelemetriedaten sind in der Regel in der gleichen Ressource wie die zugehörige serverseitige Webrolle enthalten.

Legen Sie die Application Insights-Ressourcen für die verschiedenen Komponenten in einer Ressourcengruppe ab. Mit diesem Ansatz können sie einfach zusammen verwaltet werden.

Trennen von Entwicklung, Test und Produktion

Wenn Sie benutzerdefinierte Ereignisse für das nächste Feature entwickeln, während die vorherige Version aktiv ist, sollten die Entwicklungstelemetriedaten an eine separate Application Insights-Ressource gesendet werden. Andernfalls ist es schwierig, die Testtelemetriedaten im gesamten Datenverkehr von der Livewebsite zu finden.

Um dies zu vermeiden, erstellen Sie separate Ressourcen für jede Buildkonfiguration oder jeden „Stempel“ (Entwicklung, Test, Produktion usw.) des Systems. Legen Sie die Ressourcen für jede Buildkonfiguration jeweils in einer separaten Ressourcengruppe ab.

Um die Telemetriedaten an die entsprechenden Ressourcen zu senden, können Sie das Application Insights SDK so einrichten, dass abhängig von der Buildkonfiguration jeweils ein anderer Instrumentierungsschlüssel abgerufen wird.

Erfahren Sie, wie Sie den Instrumentierungsschlüssel für verschiedene Phasen dynamisch festlegen.

Erstellen einer Application Insights-Ressource für die einzelnen Rollen

Wenn Sie eine separate Ressource für die einzelnen Rollen und eventuell eine separate Gruppe für die einzelnen Buildkonfigurationen erstellen möchten, ist es am einfachsten, diese im Application Insights-Portal zu erstellen. Wenn Sie häufig Ressourcen erstellen, können Sie den Prozess automatisieren.

  1. Wählen Sie im Azure-PortalNeu>Entwicklerdienste>Application Insights aus.

    Bereich „Application Insights“

  2. Wählen Sie in der Dropdownliste Anwendungstyp die Option ASP.NET-Webanwendung aus.

Jede Ressource wird durch einen Instrumentierungsschlüssel identifiziert. Möglicherweise benötigen Sie diesen Schlüssel später, wenn Sie die Konfiguration des SDK manuell konfigurieren oder überprüfen möchten.

Einrichten von Azure-Diagnose für die einzelnen Rollen

Legen Sie diese Option zum Überwachen Ihrer App mit Application Insights fest. Für Webrollen umfasst diese Option die Leistungsüberwachung, Warnungen, Diagnose und die Verwendungsanalyse. Für andere Rollen können Sie Azure-Diagnose durchsuchen und überwachen, z.B. Neustarten, Leistungsindikatoren und Aufrufe von „System.Diagnostics.Trace“.

  1. Öffnen Sie im Visual Studio-Projektmappen-Explorer unter <YourCloudService>>Rollen die Eigenschaften der einzelnen Rollen.

  2. Aktivieren Sie unter Konfiguration das Kontrollkästchen Diagnosedaten an Application Insights senden, und wählen Sie dann die entsprechende Application Insights-Ressource aus, die Sie zuvor erstellt haben.

Wenn Sie sich entschieden haben, eine separate Application Insights-Ressource für jede Buildkonfiguration zu verwenden, wählen Sie zuerst die Konfiguration aus.

Application Insights konfigurieren

Dadurch werden die Application Insights-Instrumentierungsschlüssel in die Dateien mit dem Namen ServiceConfiguration.*.cscfg eingefügt. Hier ist der Beispielcode.

Wenn Sie festlegen möchten, welche Diagnosedaten an Application Insights gesendet werden, können Sie dies direkt durch Bearbeiten der CSCFG-Dateien erledigen.

Installieren des SDK in den einzelnen Projekten

Mit dieser Option können Sie jeder Rolle benutzerdefinierte Geschäftstelemetriedaten hinzufügen. Die Option bietet eine genauere Analyse der Nutzung und Leistung Ihrer App.

Konfigurieren Sie in Visual Studio das Application Insights SDK für jedes Cloud-App-Projekt.

  1. Zum Konfigurieren von Webrollen klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie Application Insights konfigurieren oder Hinzufügen > Application Insights-Telemetrie aus.

  2. So konfigurieren Sie Workerrollen:

    a. Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie dann NuGet-Pakete verwalten aus.

    b. Fügen Sie Application Insights für Windows-Dienste hinzu.

  3. So konfigurieren Sie das SDK zum Senden von Daten an die Application Insights-Ressource:

    a. Legen Sie in einer geeigneten Startfunktion den Instrumentierungsschlüssel aus der Konfigurationseinstellung in der CSCFG-Datei fest:

        TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
        configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY");
        var telemetryClient = new TelemetryClient(configuration);
    

    b. Wiederholen Sie „Schritt a“ für jede Rolle in Ihrer App. Beispiele:

  4. Legen Sie für die Datei ApplicationInsights.config fest, dass sie immer in das Ausgabeverzeichnis kopiert wird.

    Sie werden über eine Meldung in der CONFIG-Datei aufgefordert, den Instrumentationsschlüssel hier zu platzieren. Für Cloud-Apps ist es jedoch besser, ihn aus der CSCFG festzulegen. Dadurch wird sichergestellt, dass die Rolle im Portal korrekt identifiziert wird.

Einrichten des Statusmonitors zum Sammeln von vollständigen SQL-Abfragen (optional)

Dieser Schritt ist nur erforderlich, wenn Sie vollständige SQL-Abfragen für .NET Framework erfassen möchten.

  1. Fügen Sie in der \*.csdef-Datei die Startaufgabe für jede Rolle hinzu, die Folgendem ähnelt:

    <Startup>
      <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple">
        <Environment>
          <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" />
          <Variable name="RoleEnvironment.IsEmulated">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
          </Variable>
        </Environment>
      </Task>
    </Startup>
    
  2. Laden Sie InstallAgent.bat und InstallAgent.ps1 herunter, und fügen Sie sie dem AppInsightsAgent-Ordner für jedes Rollenprojekt hinzu. Stellen Sie sicher, dass Sie sie über Visual Studio-Dateieigenschaften oder Buildskripts in das Ausgabeverzeichnis kopieren.

  3. Fügen Sie für alle Workerrollen Umgebungsvariablen hinzu:

      <Environment>
        <Variable name="COR_ENABLE_PROFILING" value="1" />
        <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" />
        <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" />
      </Environment>
    

Ausführen und Veröffentlichen der App

  1. Führen Sie Ihre App aus, und melden Sie sich bei Azure an.

  2. Öffnen Sie die zuvor erstellten Application Insights-Ressourcen.

    Einzelne Datenpunkte werden in Suche angezeigt, und aggregierte Daten werden im Metrik-Explorer angezeigt.

  3. Fügen Sie weitere Telemetriedaten hinzu (siehe folgende Abschnitte), und veröffentlichen Sie dann Ihre App, um Livediagnosen und Nutzungsfeedback zu erhalten.

Wenn keine Daten vorhanden sind, gehen Sie folgendermaßen vor:

  1. Zum Anzeigen einzelner Ereignisse öffnen Sie die Kachel Suche.
  2. Öffnen Sie in der App verschiedene Seiten, damit sie einige Telemetriedaten generiert.
  3. Warten Sie einige Sekunden, und klicken Sie dann auf Aktualisieren.

Anzeigen von Azure-Diagnoseereignissen

Sie finden Sie Informationen der Azure-Diagnose in Application Insights an den folgenden Speicherorten:

  • Leistungsindikatoren werden als benutzerdefinierte Metriken angezeigt.
  • Windows-Ereignisprotokolle werden als Ablaufverfolgungen und benutzerdefinierte Ereignisse angezeigt.
  • Anwendungsprotokolle, ETW-Protokolle und alle Diagnoseinfrastrukturprotokolle werden als Ablaufverfolgungen angezeigt.

Zum Anzeigen von Leistungsindikatoren und Angaben zur Anzahl von Ereignissen öffnen Sie den Metrik-Explorer und fügen das folgende Diagramm hinzu:

Azure-Diagnosedaten

Verwenden Sie zum Durchsuchen der verschiedenen Ablaufverfolgungsprotokolle, die von der Azure-Diagnose gesendet werden, die Suche oder eine Analytics-Abfrage. Angenommen, es liegt eine nicht behandelte Ausnahme vor, die das Abstürzen und erneute Aktivieren einer Rolle verursacht hat. Diese Informationen werden im Kanal „Anwendung“ des Windows-Ereignisprotokolls angezeigt. Sie können das Windows-Ereignisprotokoll mithilfe der Suchfunktion anzeigen und die vollständige Stapelüberwachung für die Ausnahme abrufen. So können Sie die Ursache des Problems ermitteln.

Durchsuchen der Azure-Diagnosedaten

Mehr Telemetrie

In den folgenden Abschnitten wird erläutert, wie Sie weitere Telemetriedaten zu verschiedenen Aspekten Ihrer Anwendung abrufen.

Nachverfolgen von Anforderungen bei Workerrollen

In Webrollen sammelt das Modul für Anforderungen automatisch Daten zu HTTP-Anforderungen. Beispiele zum Überschreiben des Standardsammelverhaltens finden Sie im MVCWebRole-Beispiel.

Sie können die Leistung der Aufrufe von Workerrollen erfassen, indem Sie diese auf die gleiche Weise wie HTTP-Anforderungen nachverfolgen. In Application Insights misst der Telemetrietyp „Anforderungen“ eine Arbeitseinheit auf dem benannten Server, die zeitlich bestimmt werden und unabhängig erfolgreich sein oder einen Fehler verursachen kann. HTTP-Anforderungen werden zwar durch das SDK automatisch erfasst, Sie können jedoch Ihren eigenen Code zum Nachverfolgen von Anforderungen an Workerrollen einfügen.

Siehe dazu die zwei Beispielworkerrollen, die zum Melden von Anforderungen instrumentiert sind:

Ausnahmen

Informationen zum Sammeln von Ausnahmefehlern aus verschiedenen Web-App-Typen finden Sie unter Diagnostizieren von Ausnahmen in Ihren Web-Apps mit Application Insights.

Die Beispielwebrolle verfügt über MVC5- und Web-API 2-Controller. Die nicht behandelten Ausnahmen von beiden werden mit den folgenden Handlern erfasst:

Für Workerrollen gibt es zwei Möglichkeiten zum Nachverfolgen von Ausnahmen:

  • Verwenden Sie TrackException(ex).
  • Wenn Sie das NuGet-Paket für Application Insights-Ablaufverfolgungslistener hinzugefügt haben, können Sie Ausnahmen mithilfe von „System.Diagnostics.Trace“ wie in diesem Beispiel gezeigt protokollieren.

Leistungsindikatoren

Die folgenden Leistungsindikatoren werden standardmäßig erfasst:

  • \Process(??APP_WIN32_PROC??)% Processor Time
  • \Memory\Verfügbare Bytes
  • .NET CLR Exceptions(??APP_CLR_PROC??)# of Exceps Thrown / sec
  • \Process(??APP_WIN32_PROC??)\Private Bytes
  • \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
  • \Processor(_Total)% Processor Time

Für Webrollen werden auch diese Leistungsindikatoren erfasst:

  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue

Sie können zusätzliche benutzerdefinierte oder andere Windows-Leistungsindikatoren angeben, indem Sie die Datei ApplicationInsights.configwie in diesem Beispiel gezeigt bearbeiten.

Leistungsindikatoren

Korrelierte Telemetriedaten für Workerrollen

Für eine umfassende Diagnose können Sie die Ursachen für Anforderungen mit Fehlern oder hoher Latenz anzeigen. Bei Webrollen richtet das SDK automatisch eine Korrelation zwischen verknüpften Telemetriedaten ein.

Für Workerrollen können Sie zu diesem Zweck mithilfe eines benutzerdefinierten Telemetrieinitialisierers ein allgemeines Operation.Id-Kontextattribut für alle Telemetriedaten festlegen. Dadurch können Sie auf einen Blick sehen, ob die Latenz oder der Fehler durch eine Abhängigkeit oder durch Ihren Code verursacht wurde.

Gehen Sie dabei folgendermaßen vor:

  • Fügen Sie die Korrelations-ID wie in diesem Beispiel gezeigt in einen CallContext ein. In diesem Fall wird die Anforderungs-ID als correlationId-Element verwendet.
  • Fügen Sie eine benutzerdefinierte TelemetryInitializer-Implementierung hinzu, die das Attribut „Operation.Id“ auf das zuvor festgelegte correlationId-Element festlegt. Ein Beispiel finden Sie unter ItemCorrelationTelemetryInitializer.
  • Fügen Sie den benutzerdefinierten Telemetrieinitialisierer hinzu. Sie können dies in der Datei ApplicationInsights.config oder wie in diesem Beispiel gezeigt im Code vornehmen.

Clienttelemetrie

Informationen zum Abrufen von browserbasierten Telemetriedaten wie Anzahl der Seitenaufrufe, Seitenladezeiten oder Skriptausnahmen sowie zum Schreiben von benutzerdefinierten Telemetriedaten in Ihre Seitenskripts finden Sie unter Application Insights für Webseiten.

Verfügbarkeitstests

Richten Sie Webtests ein, um sicherzustellen, dass die App online und reaktionsfähig bleibt.

Anzeigen aller Daten

Für eine allgemeine Übersicht über Ihr System können Sie die wichtigsten Überwachungsdiagramme in einem Dashboard anzeigen. Beispielsweise können Sie die Anforderungs- und Fehleranzahl der einzelnen Rollen anheften.

Wenn in Ihrem System andere Azure-Dienste, z.B. Stream Analytics, verwendet werden, können Sie die entsprechenden Überwachungsdiagramme auch einfügen.

Wenn Sie über eine mobile Client-App verfügen, verwenden Sie App Center. Erstellen Sie Abfragen in Analytics, um die Ereigniszähler anzuzeigen, und heften Sie sie an das Dashboard an.

Beispiel

In diesem Beispiel wird ein Dienst mit einer Webrolle und zwei Workerrollen überwacht.

Ausnahme „Methode nicht gefunden“ bei der Ausführung in Azure Cloud Services

Haben Sie für .NET LTS erstellt? Frühere Versionen werden nicht automatisch in Azure Cloud Services-Rollen unterstützt. Installieren Sie .NET LTS für jede Rolle, bevor Sie Ihre App ausführen.

Nächste Schritte