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.
Wählen Sie in Ihrer Application Insights-Ressource die Option Suchen im oberen Menü aus.
Anhand dieser Suchzeichenfolge können Sie die relevanten Daten suchen:
stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
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:
Keine eingehenden Anforderungen an Ihre Anwendung:
Sie können Ihre Anwendung manuell aufrufen oder einen Verfügbarkeitstest oder Ladetest erstellen.Keine eingehenden Telemetriedaten, die von Application Insights bestätigt werden:
- Wenn Datenverkehr an Ihre Anwendung gesendet wird: Überprüfen Sie, ob eingehende Anforderungen in den Livemetriken in Application Insights angezeigt werden.
- Wenn die
Incoming Requests
-Diagramme leer sind (keine Daten verfügbar oder „0“ wird angezeigt): Problembehandlung für Application Insights. - Wenn Sie Ihre .NET-Anwendung in Azure App Service hosten: Probieren Sie die .NET-Problembehandlungsschritte für App Service aus.
Profiler-Einstellung für Sampling ist deaktiviert:
Wenn noch immer keine Profiler-Ablaufverfolgungen verfügbar sind, überprüfen Sie die Samplingeinstellung.- Öffnen Sie den Bereich Application Insights>Leistung.
- Klicken Sie auf Profiler.
- Klicken Sie auf die Schaltfläche Trigger.
- Stellen Sie in den Triggereinstellungen sicher, dass die Umschaltfläche Sampling aktiviert ist.
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:
Wechseln Sie zu Kudu. Führen Sie im Azure-Portal die folgenden Schritte aus:
- Wählen Sie in Ihrer App Service-Instanz die Option Erweiterte Tools im linken Bereich aus.
- Klicken Sie auf Starten.
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.
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.
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:
- Öffnen Sie im Azure-Portal Ihre App Service-Anwendung.
- Wählen Sie Erweiterte Tools aus.
- Klicken Sie auf Starten.
- Auf der Kudu-Verwaltungswebsite:
- Fügen Sie
/DiagnosticServices
an die URL an. - Drücken Sie die EINGABETASTE.
- Fügen Sie
Sie endet auf https://<kudu-url>/DiagnosticServices
.
Es wird eine Statusseite ähnlich dem folgenden Beispiel angezeigt.
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:
Vergewissern Sie sich, dass der Inhalt der bereitgestellten Azure-Diagnose-Konfiguration Ihren Erwartungen entspricht.
Vergewissern Sie sich, dass die Azure-Diagnose in der Profiler-Befehlszeile den richtigen iKey übergibt.
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:
Anmelden beim virtuellen Computer.
Ö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
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.Überprüfen Sie, ob der von der .NET Profiler-Senke verwendete iKey richtig ist.
Überprüfen Sie die Befehlszeile, die Profiler startet. Die Befehlszeilenargumente befinden sich in der folgenden Datei (das Laufwerk könnte
c:
oderd:
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
Stellen Sie sicher, dass der iKey in der Profiler-Befehlszeile richtig ist.
Ü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
Wenn der .NET Profiler ausgeführt wird, während Ihre Anwendung Anforderungen empfängt, wird die folgende Meldung angezeigt: „Aktivität aus iKey erkannt“.
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.