Verfolgen Sie die mit dem Java-Agenten Insights der Anwendung ausgeführte SQL

Ich habe gerade getan, was in der Dokumentation steht.

https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/java-agent

Ich fühle mich so.

image.png

Dieses schwarz gestrichene Bild stammt aus einer mysteriösen Anfrage, deren Fertigstellung 5 Minuten dauerte. Sie können sehen, dass die SQL-Abfrage viermal ausgeführt wird und dass es ungefähr zwei verdammte Abfragen gibt. Wenn Sie auf eine der Abfragen klicken, wird SQL im Befehl rechts angezeigt.

Der Inhalt von SQL ist SQL vorbereitet, wahrscheinlich weil es PreparedStatement verwendet, und es scheint, dass Sie es nicht sehen können, bis der Parameter "?" Ist. (Im Gegenteil, selbst wenn es begraben ist, können vertrauliche Informationen sichtbar sein, daher denke ich, dass dies in Ordnung ist.) Ich kenne nicht einmal den Ort des aufgerufenen Codes. Aber wenn Sie ein Implementierer sind, wird es nützlich genug sein.

Da DB-Abfrageinformationen an Application Insights gesendet werden, ist natürlich eine Menge Übertragung erforderlich. Seien Sie daher in diesem Punkt vorsichtig.

Annahme

Wie es funktioniert

Es scheint, dass JavaAgent verwendet wird, um die Klassendatei zu ändern, wenn die Klasse mit dem Klassenladeprogramm gelesen und die Telemetrie ausgeschrieben wird.

Sie müssen lediglich den JavaAgent einbetten, damit Sie ihn verwenden können, ohne den laufenden Code zu ändern.

Einführung

Es wird davon ausgegangen, dass sich das Installationsverfahren in Azure WebApp befindet. Java-Webanwendungen sind jedoch nicht auf Azure WebApp beschränkt und können durch einfaches Lesen installiert werden.

Einführung der Anwendung Insights Java Agent

Geben Sie den Agenten ** ein, der der installierten ** Application Insights-Version entspricht, da er unter https://github.com/microsoft/ApplicationInsights-Java/releases/ veröffentlicht wird.

Arbeiten Sie mit Azure WebApp auf Kudu wie folgt. Ich denke, dass es D: \ home \ data nicht stören wird, aber bitte ändern Sie es entsprechend.


cd D:\home\data
curl -LO https://github.com/microsoft/ApplicationInsights-Java/releases/download/2.1.1/applicationinsights-agent-2.1.1.jar

Erstellen Sie eine AI-Agent.xml-Datei

Erstellen Sie eine Datei mit dem Namen "AI-Agent.xml" am selben Speicherort wie die zuvor heruntergeladene ** JAR-Datei **.

Sie können die folgenden Inhalte kopieren und einfügen.

AI-Agent.xml


<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
    <Instrumentation>
        <BuiltIn enabled="true"> <!--Vergessen Sie nicht, auch hier das aktivierte Attribut zu betrachten.-->
            <JDBC enabled="true" /> <!--Senden Sie die Abfrageausführungszeit und die vorbereitete SQL-Telemetrie, wenn Sie mit JDBC abfragen-->
        </BuiltIn>
    </Instrumentation>
</ApplicationInsightsAgent>

Diesmal ist es nur JDBC, aber es scheint, dass Sie einige HTTP-Aufrufe usw. in den Einstellungen verfolgen können.

Fügen Sie dem JVM-Argument -javaagent: ... hinzu

Fügen Sie den JVM-Argumenten Folgendes hinzu: Ersetzen Sie den Dateipfad entsprechend.

-javaagent:D:/home/data/applicationinsights-agent-2.1.1.jar

Für Apps, die auf Tomcat ausgeführt werden, sind die Umgebungsvariablen "JAVA_OPTS" und "CATALINA_OPTS" in Ordnung.

Verwenden Sie für Azure Web App die Anwendungseinstellungen oder web.config von kudu. Bitte berücksichtigen Sie dies jedoch, da ** Anwendungseinstellungen Vorrang haben **.

Neustart der Anwendung

Zum Laden des Java-Agenten ist ein Neustart erforderlich.

das ist alles.

Andere

Ich möchte redundante Telemetrie unterdrücken

Derzeit scheint es nicht möglich zu sein, nur dann zu senden, wenn es Zeit braucht.

Beispielsweise senden Abfragen, von denen bekannt ist, dass sie schnell genug sind, oder "SELECT 1", wenn beim Überprüfen aus dem Pool mithilfe des Verbindungspoolings auf Fäulnis geprüft wird, ebenfalls Telemetrie. Wenn Sie dies verhindern möchten, müssen Sie einen Filter schreiben. Das folgende Problem enthält eine Beispielimplementierung des Telemetrieprozessors.

Referenz: https://github.com/microsoft/ApplicationInsights-Java/issues/837#issuecomment-471610584

Recommended Posts

Verfolgen Sie die mit dem Java-Agenten Insights der Anwendung ausgeführte SQL
[Tutorial] Eclipse herunterladen → Anwendung mit Java ausführen (Plejaden)
[Wahrscheinlich die einfachste] WEB-Anwendungsentwicklung mit Apache Tomcat + Java Servlet
Folgen Sie dem Link mit Selen (Java)
Führen Sie in Java8 geschriebene Anwendungen in Java6 aus
One-JAR Java EE-Anwendung mit WebSphere Liberty
Sammeln von JVM-Leistungsindikatoren mit Application Insights
Versuchen Sie es mit der Wii-Fernbedienung in Java
[Java] Ermitteln Sie das Datum mit der LocalDateTime-Klasse
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
Verstehen Sie Java Serializable, während Sie die Anwendung tatsächlich ausführen
[LeJOS] Lassen Sie uns den EV3-Motor mit Java steuern
[Java] Stellen Sie die Zeit im Browser mit jsoup ein
Grundlegendes zum MVC-Framework mit serverseitiger Java 1/4 View
Grundlegendes zum MVC-Framework mit serverseitigem Java 3/4 Controller
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
[JAVA] [Spring] [MyBatis] Verwenden Sie IN () mit SQL Builder
[Java / PostgreSQL] Verbinden Sie die WEB-Anwendung mit der Datenbank
Java beginnend mit JShell-A Einblick in die Java-Welt
Grundlegendes zum MVC-Framework mit dem serverseitigen Java 2/4 -Modell