Problembehandlung bei Azure-App lication Insights in einem Java-Webprojekt
Dieser Artikel enthält Problembehandlungslösungen für häufige Probleme in einem Q&A-Format für Application Insights Java 2.x.
Achtung
Dieses Dokument gilt für Application Insights Java 2.x. Diese Version wird jedoch nicht mehr empfohlen.
Die Dokumentation für die neueste Version finden Sie unter Application Insights Java 3.x.
Haben Sie Fragen oder Probleme im Zusammenhang mit Azure Application Insights in Java? Hier sind einige Tipps.
Buildfehler
Wenn ich das Application Insights SDK über Maven oder Gradle hinzufüfe, erhalte ich in Eclipse oder Intellij Idea Build- oder Prüfsummenüberprüfungsfehler.
Wenn das Abhängigkeitsversionselement ein Muster verwendet, das Wildcardzeichen enthält (z<version>[2.0,)</version>
. B. in Maven oder version:'2.+'
Gradle), versuchen Sie stattdessen, eine bestimmte Version anzugeben, z. B. .2.6.4
<>
Keine Daten
Ich habe Application Insights erfolgreich hinzugefügt und meine App ausgeführt, aber ich habe noch nie Daten im Portal gesehen.
Warten Sie ungefähr eine Minute, und wählen Sie dann "Aktualisieren" aus. Die Diagramme aktualisieren sich in regelmäßigen Abständen selbst, können aber auch manuell aktualisiert werden. Das Aktualisierungsintervall hängt vom Zeitbereich des Diagramms ab.
Stellen Sie sicher, dass Sie einen Instrumentierungsschlüssel in der datei ApplicationInsights.xml (im Ressourcenordner in Ihrem Projekt) definiert oder als Umgebungsvariable konfiguriert haben.
Stellen Sie sicher, dass in der XML-Datei kein
<DisableTelemetry>true</DisableTelemetry>
Knoten vorhanden ist.Öffnen Sie bei Bedarf die TCP-Ports 80 und 443 in Ihrer Firewall, um ausgehenden Datenverkehr zu
dc.services.visualstudio.com
senden. Sehen Sie sich die vollständige Liste der Firewall-Ausnahmen an.Schauen Sie sich auf der Startseite von Microsoft Azure die Dienststatusübersicht an. Wenn es einige Warnungsanzeigen gibt, warten Sie, bis sie zu OK zurückgekehrt sind, und schließen Sie das Anwendungsblatt "Application Insights", und öffnen Sie es erneut.
Aktivieren Sie die Protokollierung, indem Sie ein< SDKLogger-Element> unter dem Stammknoten in der datei ApplicationInsights.xml (im Ressourcenordner in Ihrem Projekt) hinzufügen. Suchen Sie dann nach Einträgen, die
AI: INFO/WARN/ERROR
mit verdächtigen Protokollen vorgestellt sind.Stellen Sie sicher, dass die richtige ApplicationInsights.xml Datei erfolgreich vom Java SDK geladen wurde. Überprüfen Sie die Ausgabemeldungen der Konsole auf eine Anweisung "Konfigurationsdatei wurde erfolgreich gefunden".
Wenn die Konfigurationsdatei nicht gefunden wird, überprüfen Sie die Ausgabemeldungen, um zu sehen, wo die Konfigurationsdatei gesucht wird. Stellen Sie sicher, dass sich die ApplicationInsights.xml an einem dieser Suchspeicherorte befindet. Als Faustregel können Sie die Konfigurationsdatei bei den JAR-Dateien des Application Insights-SDK ablegen. In Tomcat wäre der Ordner beispielsweise WEB-INF/Klassen. Während der Entwicklung können Sie ApplicationInsights.xml im Ressourcenordner Ihres Webprojekts platzieren.
Überprüfen Sie die GitHub-Problemseite auf bekannte Probleme mit dem SDK.
Achten Sie darauf, die gleiche Version von Application Insights Core,Web-, Agent- und Protokollierungsanhängern zu verwenden, um Versionskonfliktprobleme zu vermeiden.
Notiz
Dieser Artikel wurde kürzlich aktualisiert, um den Begriff Azure Monitor-Protokolle anstelle von Log Analytics zu verwenden. Protokolldaten werden weiterhin in einem Log Analytics-Arbeitsbereich gespeichert, und sie werden weiterhin vom gleichen Log Analytics-Dienst erfasst und analysiert. Wir aktualisieren die Terminologie, um die Rolle von Protokollen in Azure Monitor besser widerzuspiegeln. Weitere Informationen finden Sie unter Terminologieänderungen bei Azure Monitor.
Ich habe verwendet, um Daten anzuzeigen, aber es wurde angehalten.
Ist Ihr monatliches Kontingent an Datenpunkten erreicht? Öffnen Sie das Einstellungskontingent>und die Preise, um herauszufinden. Wenn ja, können Sie Ihren Plan aktualisieren oder für mehr Kapazität bezahlen. Weitere Informationen finden Sie im Preisschema.
Haben Sie Ihr SDK vor Kurzem aktualisiert? Stellen Sie sicher, dass nur eindeutige SDK-Jars im Projektverzeichnis vorhanden sind. Es sollte nicht zwei verschiedene Versionen des SDK vorhanden sein.
Sehen Sie die richtige AI-Ressource? Achten Sie darauf, den iKey Ihrer Anwendung mit der Ressource abzugleichen, in der Sie Telemetrie erwarten. Sie sollten identisch sein.
Nicht alle Daten werden erwartungsgemäß angezeigt.
Öffnen Sie die Seite "Nutzung" und "Geschätzte Kosten ", und überprüfen Sie, ob das Sampling in Betrieb ist. (Eine Übertragung von 100 % bedeutet, dass kein Sampling durchgeführt wird.) Der Application Insights-Dienst kann für die Übernahmen nur eines Bruchteils der Telemetriedaten, die von Ihrer App empfangen werden, konfiguriert werden. Diese Einstellung hilft Ihnen, ihr monatliches Telemetriekontingent einzuhalten.
Haben Sie die SDK-Stichprobenerstellung aktiviert? Wenn Ja, werden Stichproben der Daten mit der Rate erstellt, die für alle entsprechenden Typen angegeben ist.
Führen Sie eine ältere Version des Java-SDKs aus? Ab Version 2.0.1 haben wir einen Fehlertoleranzmechanismus eingeführt, um zeitweilige Netzwerk- und Back-End-Fehler sowie die Datenpersistenz auf lokalen Laufwerken zu behandeln.
Überprüfen Sie, ob übermäßige Telemetrie zu Drosselung geführt hat. Wenn Sie die INFO-Protokollierung aktivieren, wird eine Protokollmeldung "App ist gedrosselt" angezeigt. Unser aktuelles Limit beträgt etwa 32.000 Telemetrieelemente pro Sekunde.
Java-Agent kann Keine Abhängigkeitsdaten erfassen
Haben Sie den Java-Agent konfiguriert?
Stellen Sie sicher, dass sowohl die Java-Agent-Jar-Datei als auch die AI-Agent.xml-Datei im selben Ordner platziert sind.
Stellen Sie sicher, dass die Abhängigkeit, die Sie automatisch sammeln möchten, für die automatische Sammlung unterstützt wird. Derzeit unterstützen wir nur MySQL, Microsoft SQL Server, Oracle DB und Azure Cache für Redis-Abhängigkeitssammlung.
Keine Nutzungsdaten
Ich sehe Daten zu Anforderungen und Antwortzeiten, aber keine Seitenansicht, keinen Browser oder Benutzerdaten
Sie haben Ihre App erfolgreich so eingerichtet, dass Telemetriedaten vom Server gesendet werden. Jetzt ist der nächste Schritt das Einrichten Ihrer Webseiten für das Senden von Telemetriedaten aus dem Webbrowser.
Wenn der Client eine App auf einem Smartphone oder anderen Gerät ist, können Sie Telemetriedaten von dort aus senden.
Verwenden Sie den gleichen Instrumentationsschlüssel zum Einrichten der Telemetrie auf Client und Server. Die Daten werden in derselben Application Insights-Ressource angezeigt, und Sie können Ereignisse vom Client und Server korrelieren.
Telemetrie deaktivieren
Wie kann ich die Telemetrieerfassung deaktivieren?
Folgen Sie einer der folgenden Lösungen:
Sammlung im Code deaktivieren:
TelemetryConfiguration config = TelemetryConfiguration.getActive(); config.setTrackingIsDisabled(true);
Aktualisieren Sie ApplicationInsights.xml (im Ressourcenordner in Ihrem Projekt). Fügen Sie das folgende XML-Element unter dem Stammknoten hinzu:
<DisableTelemetry>true</DisableTelemetry>
Wenn Sie die XML-Methode verwenden, müssen Sie die Anwendung neu starten, wenn Sie den Wert ändern.
Ändern des Ziels
Wie kann ich ändern, an welche Azure-Ressource mein Projekt Daten sendet?
Rufen Sie den Instrumentierungsschlüssel der neuen Ressource ab.
Wenn Sie Ihrem Projekt Application Insights mithilfe des Azure Toolkits für Eclipse hinzugefügt haben, klicken Sie mit der rechten Maustaste auf Ihr Webprojekt, wählen Sie Azure>Configure Application Insights aus, und ändern Sie dann den Schlüssel.
Wenn Sie den Instrumentierungsschlüssel als Umgebungsvariable konfiguriert haben, müssen Sie den Wert der Umgebungsvariable mit dem neuen iKey aktualisieren.
Aktualisieren Sie andernfalls den Schlüssel in ApplicationInsights.xml im Ressourcenordner für Ihr Projekt.
Daten-Debug aus SDK
Wie finde ich heraus, was das SDK ausführt?
Um weitere Informationen zu den Ereignissen in der API zu erhalten, fügen Sie das <SDKLogger-Element> im Stammknoten der konfigurationsdatei ApplicationInsights.xml hinzu.
ApplicationInsights.xml
<Im SDKLogger-Element> können Sie den Logger auch anweisen, eine Datei auszugeben:
<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>
Spring Boot Starter
Um die SDK-Protokollierung mit Federstart-Apps mithilfe des Application Insights Spring Boot Starter zu aktivieren, fügen Sie der Datei "application.properties " die folgenden Zeilen hinzu:
azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace
Alternativ können Sie den Standardfehlerdatenstrom drucken:
azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace
Java-Agent
Um die JVM-Agentprotokollierung zu aktivieren, aktualisieren Sie die AI-Agent.xml Datei:
<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>
Java-Befehlszeileneigenschaften
Seit Version 2.4.0
Um die Protokollierung mithilfe von Befehlszeilenoptionen zu aktivieren, anstatt Konfigurationsdateien zu ändern, führen Sie den folgenden Befehl aus:
java -Dapplicationinsights.logger.file.level=trace \
-Dapplicationinsights.logger.file.uniquePrefix=AI \
-Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
-jar MyApp.jar
Oder führen Sie den folgenden Befehl aus, um in den Standardfehlerdatenstrom zu drucken:
java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar
Der Azure-Startbildschirm
Ich sehe mir das Azure-Portal an. Teilt mir die Karte etwas über meine App mit?
Nein, sie zeigt die Integrität der Azure-Server auf der ganzen Welt.
Gewusst wie Daten zu meiner App aus dem Azure-Startboard (Startbildschirm) finden?
Wenn Sie Ihre App für Application Insights einrichten, wählen Sie "Application Insights durchsuchen>" und dann die App-Ressource aus, die Sie für Ihre App erstellt haben. Um in Zukunft schneller dorthin zu gelangen, heften Sie Ihre App an das Startboard an.
Intranetserver
Kann ich einen Server in meinem Intranet überwachen?
Ja, sofern Ihr Server über das öffentliche Internet Telemetriedaten an das Application Insights-Portal senden kann.
Möglicherweise müssen in der Serverfirewall einige ausgehende Ports geöffnet werden, damit das SDK Daten an das Portal senden kann.
Beibehaltung von Daten
Wie lange werden Daten im Portal aufbewahrt? Ist Sicherheit gewährleistet?
Informationen hierzu finden Sie unter Datensammlung, -aufbewahrung und -speicherung in Application Insights.
Debugprotokollierung
Application Insights verwendet org.apache.http
. Dieser Namespace wird innerhalb der Application Insights-Kerngläser unter dem Namespace com.microsoft.applicationinsights.core.dependencies.http
verschoben. Diese Verlagerung ermöglicht Application Insights die Behandlung von Szenarien, in denen verschiedene Versionen desselben org.apache.http
in einer Codebasis vorhanden sind.
Notiz
Wenn Sie die Protokollierung auf Ebene der Ebene für alle Namespaces in der App aktivieren DEBUG
, wird sie von allen ausgeführten Modulen (einschließlich org.apache.http
umbenannt als com.microsoft.applicationinsights.core.dependencies.http
) berücksichtigt. Application Insights kann keine Filterung für diese Aufrufe anwenden, da der Protokollaufruf von der Apache-Bibliothek erfolgt. DEBUG
Die Protokollierung auf Ebene der Ebene erzeugt eine beträchtliche Menge von Protokolldaten und wird für Liveproduktionsinstanzen nicht empfohlen.
Nächste Schritte
Ich habe Application Insights für meine Java-Server-App eingerichtet. Welche weiteren Möglichkeiten gibt es?
Nachverfolgen der Nutzung und Diagnostizieren von Problemen in Ihren Geräte-Apps
Schreiben von Code zum Nachverfolgen der Verwendung Ihrer App
Hier erhalten Sie Hilfe
Informationen zum Haftungsausschluss von Drittanbietern
Die in diesem Artikel genannten Drittanbieterprodukte stammen von Herstellern, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.