Freigeben über


Problembehandlung beim Application Insights Profiler for .NET

Dieser Artikel enthält Schritte zur Problembehandlung sowie Informationen zur Verwendung von Application Insights Profiler for .NET.

Verwenden Sie den richtigen .NET Profiler-Endpunkt?

Derzeit sind Azure Government und Microsoft Azure operated by 21Vianet die einzigen Regionen, für die Endpunktänderungen erforderlich sind.

App-Einstellung US Government-Cloud China-Cloud
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsProfilerEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

Läuft Ihre App mit der richtigen Version?

Der Profiler wird auf dem .NET Framework höher als 4.6.2 unterstützt.

Wenn Ihre Web-App eine ASP.NET Core-Anwendung ist, muss sie die neueste unterstützte ASP.NET Core-Runtime ausführen.

Verwenden Sie den richtigen Azure-Dienstplan?

Der .NET Profiler wird in kostenlosen oder geteilten App Service-Plänen nicht unterstützt. Aktualisieren Sie auf einen der grundlegenden Pläne für Profiler, um mit der Arbeit zu beginnen.

Hinweis

Der Azure Functions-Verbrauchsplan wird nicht unterstützt. Siehe Erstellen von Profilen für Azure Functions-Live-Apps mit Application Insights.

Suchen Sie innerhalb des richtigen Zeitrahmens nach .NET Profiler-Daten?

Falls die Daten, die Sie anzeigen möchten, bereits älter als zwei Wochen sind, schränken Sie Ihren Zeitfilter ein, und versuchen Sie es noch einmal. Ablaufverfolgungen werden nach sieben Tagen gelöscht.

Kennen Sie die .NET Profiler-Sampling-Rate und den damit verbundenen Aufwand?

Der .NET Profiler wird zufällig zwei Minuten pro Stunde auf jedem virtuellen Computer ausgeführt, der die Anwendung hostet und auf dem Profiler aktiviert wurde.

Hinweis

Wenn Application Insights Profiler für .NET aktiv ausgeführt wird und Ablaufverfolgungen erfasst, steigt die CPU- und Arbeitsspeicherauslastung auf Ihrem Server in der Regel um 5 % bis 15 %.

Es fallen keine zusätzlichen Kosten für das Speichern der Daten an, die vom .NET Profiler erfasst werden. Die Daten werden nach 15 Tagen automatisch gelöscht.

Können Sie auf das Gateway zugreifen?

Stellen Sie sicher,dass der Zugriff auf diese Webseite nicht durch eine Firewall oder Proxys blockiert wird.

Treten Timeouts auf oder müssen Sie überprüfen, ob .NET Profiler ausgeführt wird?

Die Profiler-Daten werden nur hochgeladen, wenn sie an eine Anforderung angefügt werden können, die während der Profiler-Ausführung erfolgt ist. Der .NET Profiler sammelt jede Stunde zwei Minuten lang Daten. Sie können den Profiler auch auslösen, indem Sie eine Profilerstellungssitzung starten.

Der Profiler schreibt Meldungen zur Ablaufverfolgung und benutzerdefinierten Ereignissen in Ihre Application Insights-Ressource. Sie können anhand dieser Ereignisse feststellen, wie der Profiler ausgeführt wird.

Suchen Sie nach Ablaufverfolgungsmeldungen und benutzerdefinierten Ereignissen, die vom .NET Profiler an Ihre Application Insights-Ressource gesendet werden.

  1. Wählen Sie in Ihrer Application Insights-Ressource die Option Suchen im oberen Menü aus.

    Screenshot, der die Auswahl der Schaltfläche „Suchen“ in der Application Insights-Ressource zeigt.

  2. Anhand dieser Suchzeichenfolge können Sie die relevanten Daten suchen:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Screenshot, der die Suchergebnisse aus der zuvor erwähnten Suchzeichenfolge zeigt.

    Die vorigen Suchergebnisse umfassen zwei Beispiele für Suchvorgänge aus zwei KI-Ressourcen:

    • Wenn die Anwendung keine Anforderungen empfängt, während der Profiler ausgeführt wird, erklärt die Nachricht, dass der Upload aufgrund von Inaktivität abgebrochen wurde.

    • Auf der rechten Seite wurde Profiler gestartet und hat benutzerdefinierte Ereignisse gesendet, wenn während der Profiler-Ausführung Anforderungen erkannt wurden. Wenn das ServiceProfilerSample benutzerdefinierte Ereignis angezeigt wird, bedeutet dies, dass ein Profil erfasst wurde und im Bereich Leistung von Application Insights verfügbar ist.

    Wenn keine Datensätze angezeigt werden, wird Profiler nicht ausgeführt oder hat nicht rechtzeitig reagiert. Stellen Sie sicher, dass Profiler in Ihrem Azure-Dienst aktiviert ist.

Der .NET Profiler ist aktiviert, aber keine erfassten Ablaufverfolgungen

Auch wenn Profiler aktiviert ist, können möglicherweise keine Ablaufverfolgungen erfasst oder hochgeladen werden, insbesondere in diesen Situationen:

  1. Keine eingehenden Anforderungen an Ihre Anwendung:
    Sie können Ihre Anwendung manuell aufrufen oder einen Verfügbarkeitstest oder Ladetest erstellen.

  2. Keine eingehenden Telemetriedaten, die von Application Insights bestätigt werden:

  3. Profiler-Einstellung für Sampling ist deaktiviert:
    Wenn noch immer keine Profiler-Ablaufverfolgungen verfügbar sind, überprüfen Sie die Samplingeinstellung.

    1. Öffnen Sie den Bereich Application Insights>Leistung.
    2. Klicken Sie auf Profiler.
    3. Klicken Sie auf die Schaltfläche Trigger.
    4. Stellen Sie in den Triggereinstellungen sicher, dass die Umschaltfläche Sampling aktiviert ist.
  4. Werden noch immer keine Ablaufverfolgungen hochgeladen?
    Erstellen Sie eine Supportanfrage, oder bitten Sie den Azure-Communitysupport um Hilfe. Sie können auch Produktfeedback an die Azure Feedback Community senden.

Doppelte Erfassung in parallelen Threads

Wenn zwei oder mehr parallele Threads einer Anforderung zugeordnet sind, kann die Gesamtzeitmetrik in der Stapelanzeige mehr als die Dauer der Anforderung sein. In diesem Fall übersteigt die Gesamtzeit der Threads die verstrichene Zeit.

Ein Thread wartet möglicherweise auf den Abschluss eines anderen Threads. Der Viewer versucht, solche Fälle zu erkennen und die nicht relevante Wartezeit zu ignorieren. Im Zweifelsfall werden jedoch eher zu viele Informationen angezeigt, um zu vermeiden, dass womöglich entscheidende Informationen ausgelassen werden.

Wenn Ihnen in Ihren Ablaufverfolgungen parallele Threads auffallen, bestimmen Sie die wartenden Threads, um den kritischen Pfad für die Anforderung ermitteln zu können. In der Regel wartet der Thread, der schnell in einen Wartezustand wechselt, auf den Abschluss der anderen Threads. Konzentrieren Sie sich auf die anderen Threads, und ignorieren Sie die Zeit in den wartenden Threads.

Problembehandlung beim .NET Profiler auf Ihrem spezifischen Azure-Dienst

In den folgenden Abschnitten werden die Schritte zur Problembehandlung für die Verwendung von Profiler in Azure App Service oder Azure Cloud Services beschrieben.

Azure App Service

Damit der .NET Profiler ordnungsgemäß funktioniert, müssen die folgenden Voraussetzungen erfüllt sein:

  • Für Ihre Web-App ist Application Insights aktiviert mit den richtigen Einstellungen.

  • Der WebJob ApplicationInsightsProfiler3 wird ausgeführt. So überprüfen Sie den Webauftrag:

    1. Wechseln Sie zu Kudu. Führen Sie im Azure-Portal die folgenden Schritte aus:

      1. Wählen Sie in Ihrer App Service-Instanz die Option Erweiterte Tools im linken Bereich aus.
      2. Klicken Sie auf Starten.
    2. Wählen Sie im oberen Menü Tools>WebJobs-Dashboard aus. Der Bereich WebJobs wird geöffnet.

      Wenn ApplicationInsightsProfiler3 nicht angezeigt wird, starten Sie Ihre App Service-Anwendung neu.

      Screenshot des Bereichs „WebJobs“, in dem der Name, der Status und die Uhrzeit der letzten Ausführung von Jobs angezeigt wird.

    3. Klicken Sie zum Anzeigen der WebJob-Details einschließlich des Protokolls auf den Link ApplicationInsightsProfiler3. Der Bereich Continuous WebJob Details (Details des fortlaufenden WebJobs) wird geöffnet.

      Screenshot des Bereichs „Continuous WebJob Details“ (Details des fortlaufenden WebJobs).

Wenn der .NET Profiler bei Ihnen immer noch nicht funktioniert, laden Sie das Protokoll herunter, und übermitteln Sie ein Azure-Supportticket.

Überprüfen der Seite „Status“ der Websiteerweiterung für Diagnostic Services

Wenn Sie den .NET Profiler im Portal über den Bereich „Application Insights“ aktiviert haben, wird Profiler durch die Websiteerweiterung des Diagnosediensts verwaltet. Sie können die Statusseite dieser Erweiterung prüfen, indem Sie zu https://{site-name}.scm.azurewebsites.net/DiagnosticServices wechseln.

Hinweis

Die Domäne des Links zur Statusseite hängt von der Cloud ab. Diese Domäne entspricht der Kudu-Verwaltungswebsite für App Service.

Auf dieser Statusseite wird der Installationsstatus des .NET Profiler und den Momentaufnahmedebugger-Agents angezeigt. Wenn ein unerwarteter Fehler aufgetreten ist, wird er zusammen mit den Schritten zur Problembehebung angezeigt.

Sie können die Kudu-Verwaltungswebsite für App Service dazu verwenden, die Basis-URL dieser Statusseite abzurufen:

  1. Öffnen Sie im Azure-Portal Ihre App Service-Anwendung.
  2. Wählen Sie Erweiterte Tools aus.
  3. Klicken Sie auf Starten.
  4. Auf der Kudu-Verwaltungswebsite:
    1. Fügen Sie /DiagnosticServices an die URL an.
    2. Drücken Sie die EINGABETASTE.

Sie endet auf https://<kudu-url>/DiagnosticServices.

Es wird eine Statusseite ähnlich dem folgenden Beispiel angezeigt.

Screenshot der Statusseite von Diagnostic Service.

Hinweis

Die codefreie Installation von Application Insights Profiler for .NET folgt der Richtlinie zur .NET Core-Unterstützung. Weitere Informationen zu unterstützten Runtimes finden Sie in der .NET Core-Unterstützungsrichtlinie.

Manuelle Installation

Wenn Sie den .NET Profiler konfigurieren, werden an den Einstellungen der Web-App Aktualisierungen vorgenommen. Wenn erforderlich, können Sie die Updates manuell anwenden.

Zu viele aktive Profilerstellungssitzungen

In Azure App Service gibt es einen Grenzwert von nur jeweils einer Profilerstellungssitzung. Dieser Grenzwert wird auf VM-Ebene für alle Anwendungen und Bereitstellungsslots erzwungen, die in einem App Service-Plan ausgeführt werden. Dieser Grenzwert gilt gleichermaßen für Profilerstellungssitzungen, die über Probleme diagnostizieren und beheben, Kudu und Application Insights Profiler for .NET gestartet wurden.

Wenn der .NET Profiler versucht, eine Sitzung zu starten, während eine andere bereits ausgeführt wird, wird ein Fehler im Anwendungsprotokoll und zudem im fortlaufenden WebJob-Protokoll für ApplicationInsightsProfiler3 protokolliert.

Möglicherweise wird in den Protokollen eine der folgenden Meldungen angezeigt:

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

Der Fehlercode 0xE111005E gibt an, dass eine Profilerstellungssitzung nicht gestartet werden konnte, da eine andere Sitzung bereits ausgeführt wird.

Verschieben Sie einige Web-Apps in einen anderen App Service-Plan, oder deaktivieren Sie den Profiler in einigen Anwendungen, um den Fehler zu vermeiden. Wenn Sie Bereitstellungsslot verwenden, beenden Sie alle nicht verwendeten Slots.

Bereitstellungsfehler: Verzeichnis ist nicht leer „D:\home\site\wwwroot\App_Data\jobs“

Wenn Sie Ihre Web-App erneut für eine Web-Apps-Ressource bereitstellen und der .NET Profiler aktiviert ist, wird möglicherweise eine Meldung wie die folgende angezeigt:

„Directory Not Empty 'D:\home\site\wwwroot\App_Data\jobs'“

Dieser Fehler tritt auf, wenn Sie Web Deploy über Skripts oder Azure Pipelines ausführen. Als Lösung fügen Sie die folgenden Bereitstellungsparameter der Web Deploy-Aufgabe hinzu:

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

Diese Parameter löschen den Ordner, der von Application Insights Profiler for .NET verwendet wird, und heben die Sperre der erneuten Bereitstellung auf. Sie haben keine Auswirkungen auf die Profiler-Instanz, die gerade ausgeführt wird.

Wird Application Insights Profiler for .NET-Daten ausgeführt?

Der Profiler wird als fortlaufender Webauftrag in der Web-App ausgeführt. Sie können die Web-App-Ressource im Azure-Portal öffnen. Überprüfen Sie im Bereich WebJobs den Status von ApplicationInsightsProfiler. Wenn er nicht ausgeführt wird, öffnen Sie Protokolle, um weitere Informationen zu erhalten.

VMs und Azure Cloud Services

Anhand der folgenden Schritte können Sie feststellen, ob .NET Profiler von der Azure-Diagnose richtig konfiguriert wurde:

  1. Vergewissern Sie sich, dass der Inhalt der bereitgestellten Azure-Diagnose-Konfiguration Ihren Erwartungen entspricht.

  2. Vergewissern Sie sich, dass die Azure-Diagnose in der Profiler-Befehlszeile den richtigen iKey übergibt.

  3. Prüfen Sie in der Profiler-Protokolldatei, ob .NET Profiler ausgeführt wurde, aber einen Fehler zurückgegeben hat.

Überprüfen der Einstellungen, die zum Konfigurieren der Azure-Diagnose verwendet wurden:

  1. Anmelden beim virtuellen Computer.

  2. Öffnen Sie die Protokolldatei an diesem Speicherort. Die Plug-in-Version ist auf Ihrem Computer möglicherweise neuer.

    Für VMs:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    Für Azure Cloud Services:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. Suchen Sie in der Datei nach der Zeichenfolge WadCfg, um die Einstellungen zu finden, die zum Konfigurieren der Azure-Diagnose an den virtuellen Computer übergeben wurden.

  4. Überprüfen Sie, ob der von der .NET Profiler-Senke verwendete iKey richtig ist.

  5. Überprüfen Sie die Befehlszeile, die Profiler startet. Die Befehlszeilenargumente befinden sich in der folgenden Datei (das Laufwerk könnte c: oder d: sein, und das Verzeichnis ist möglicherweise ausgeblendet):

    Für VMs:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    Für Azure Cloud Services:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Stellen Sie sicher, dass der iKey in der Profiler-Befehlszeile richtig ist.

  7. Überprüfen Sie die Profiler-Protokolldatei namens BootstrapN.log anhand des Pfads in der vorherigen Datei config.json. Er enthält folgende Informationen:

    • Darin werden die Debuginformationen angezeigt, welche die von Profiler verwendeten Einstellungen angeben.
    • Außerdem werden Status- und Fehlermeldungen von Profiler angezeigt.

    Sie finden die Datei hier:

    Für VMs:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    Für Azure Cloud Services:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. Wenn der .NET Profiler ausgeführt wird, während Ihre Anwendung Anforderungen empfängt, wird die folgende Meldung angezeigt: „Aktivität aus iKey erkannt“.

  9. Wenn die Ablaufverfolgung hochgeladen wird, wird die folgende Meldung angezeigt: „Starten, um die Ablaufverfolgung hochzuladen“.

Bearbeiten von Netzwerkproxy- oder Firewallregeln

Wenn Ihre Anwendung über einen Proxy oder über eine Firewall mit dem Internet verbunden ist, müssen Sie eventuell die Regeln aktualisieren, damit sie mit dem .NET Profiler kommunizieren kann.

Die von Application Insights Profiler for .NET verwendeten IP-Adressen sind im Azure Monitor-Diensttag enthalten. Weitere Informationen finden Sie in der Dokumentation zu Diensttags.

Support

Wenn Sie weiterhin Hilfe benötigen, übermitteln Sie ein Supportticket im Azure-Portal. Geben Sie dabei die Korrelations-ID aus der Fehlermeldung an.