Tracez le SQL exécuté avec l'agent java Application Insights

Je viens de faire ce qui est dans la documentation.

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

Je me sens comme cela.

image.png

Cette image peinte en noir est issue d'une mystérieuse demande qui a pris 5 minutes pour se terminer. Vous pouvez voir que la requête SQL est exécutée 4 fois et qu'il y a environ 2 putains de requêtes. Si vous cliquez sur l'une des requêtes, SQL apparaîtra dans la commande à droite.

Le contenu du SQL est préparé en SQL probablement parce qu'il utilise PreparedStatement, et il semble que vous ne pouvez pas le voir tant que le paramètre n'est pas "?". (Au contraire, même si elles sont enterrées, des informations confidentielles peuvent être visibles, donc je pense que c'est bien) Je ne connais même pas l'emplacement du code appelé. Mais si vous êtes un exécutant, ce sera assez utile.

Bien sûr, étant donné que les informations de requête de base de données sont envoyées à Application Insights, cela prend beaucoup de transfert, alors faites attention à ce point.

supposition

--Application Java --Application Insights a été installé

Comment ça fonctionne

Il semble que JavaAgent soit utilisé pour modifier le fichier de classe lors de la lecture de la classe avec le chargeur de classe et pour écrire la télémétrie.

Tout ce que vous avez à faire est d'incorporer le JavaAgent pour pouvoir l'utiliser sans modifier le code en cours d'exécution.

introduction

--Télécharger le fichier javaagent --Créez AI-Agent.xml au même emplacement --Ajout de -javaagent: ... à l'argument JVM

La procédure d'installation est supposée être sur Azure WebApp, mais les applications Web Java ne sont pas limitées à Azure WebApp et peuvent être installées simplement en lisant un peu.

Présentation de l'agent Java Application Insights

Puisqu'il est publié sur https://github.com/microsoft/ApplicationInsights-Java/releases/, saisissez l'agent ** qui correspond à la version ** Application Insights installée.

Avec Azure WebApp, procédez comme suit sur kudu. Je pense que cela ne gênera pas D: \ home \ data, mais veuillez le modifier comme il convient.


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

Fichier ʻCréer AI-Agent.xml`

ʻCréez un fichier appelé AI-Agent.xml` au même emplacement que le ** fichier jar que vous avez téléchargé précédemment **.

Vous pouvez copier et coller le contenu suivant.

AI-Agent.xml


<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
    <Instrumentation>
        <BuiltIn enabled="true"> <!--N'oubliez pas de regarder également l'attribut enabled ici.-->
            <JDBC enabled="true" /> <!--Envoyer l'heure d'exécution de la requête et préparer la télémétrie SQL lors de l'interrogation avec JDBC-->
        </BuiltIn>
    </Instrumentation>
</ApplicationInsightsAgent>

Cette fois, il ne s'agit que de JDBC, mais il semble que vous puissiez suivre certains appels HTTP, etc. dans les paramètres.

Ajoutez -javaagent: ... à l'argument JVM

Ajoutez ce qui suit aux arguments JVM: Remplacez le chemin du fichier comme il convient.

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

Pour les applications qui s'exécutent sur Tomcat, les variables d'environnement «JAVA_OPTS» et «CATALINA_OPTS» conviennent.

Pour Azure Web App, utilisez les paramètres d'application ou web.config de kudu. Cependant, veuillez prendre cela en considération car ** les paramètres de l'application ont priorité **.

Redémarrage de l'application

Un redémarrage est nécessaire pour charger le javaagent.

c'est tout.

Autre

Je souhaite supprimer la télémétrie redondante

À l'heure actuelle, il semble qu'il n'est pas possible d'envoyer uniquement lorsque cela prend du temps.

Par exemple, les requêtes connues pour être suffisamment rapides ou «SELECT 1» lors de la vérification de la pourriture lorsqu'elles sont retirées du pool à l'aide du pool de connexions enverront également des données de télémétrie. Si vous voulez l'empêcher, vous devez écrire un filtre. Le problème suivant présente un exemple d'implémentation du processeur de télémétrie.

Référence: https://github.com/microsoft/ApplicationInsights-Java/issues/837#issuecomment-471610584

Recommended Posts

Tracez le SQL exécuté avec l'agent java Application Insights
[Tutoriel] Télécharger Eclipse → Lancer l'application avec Java (Pléiades)
[Probablement le plus simple] Développement d'applications WEB avec Apache Tomcat + Java Servlet
Suivez le lien avec Selenium (Java)
Exécuter des applications écrites en Java8 en Java6
Application Java EE One-JAR avec WebSphere Liberty
Collecte des compteurs de performances JVM avec Application Insights
Essayez d'utiliser la télécommande Wii en Java
[Java] Obtenez la date avec la classe LocalDateTime
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Comprendre le sérialisable de Java tout en exécutant l'application
[LeJOS] Contrôlons le moteur EV3 avec Java
[Java] Réglez l'heure depuis le navigateur avec jsoup
Comprendre le framework MVC avec Java 1/4 View côté serveur
Comprendre le framework MVC avec le contrôleur Java 3/4 côté serveur
Calculer le score de similarité des chaînes de caractères avec JAVA
[JAVA] [Spring] [MyBatis] Utiliser IN () avec SQL Builder
[Java / PostgreSQL] Connectez l'application WEB à la base de données
Java commençant par JShell-Un aperçu du monde Java
Comprendre le framework MVC avec le modèle Java 2/4 côté serveur