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.
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.
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.
-javaagent: ...
zum JVM-Argument hinzugefügtEs 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.
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 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.
-javaagent: ...
hinzuFü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 **.
Zum Laden des Java-Agenten ist ein Neustart erforderlich.
das ist alles.
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