[JAVA] Collecte des compteurs de performances JVM avec Application Insights

Je voudrais vérifier la fréquence d'occurrence du GC et le taux d'utilisation de la mémoire sur la JVM. Vous pouvez l'obtenir avec jstat etc., mais vous pouvez également l'obtenir avec Application Insights avec une petite modification.

Incorporer Application Insights pour envoyer des métriques

--Incluez com.microsoft.azure: applicationinsights-web comme dépendance dans pom.xml --Appeler TelemetryConfiguration.getActive (). SetInstrumentationKey (telemetryKey); à l'initialisation, etc. pour définir --ʻAjouter ApplicationInsights.xml` comme ressource

Par exemple, pour Spring Boot, ajoutez Change like this.

J'ai beaucoup écrit dans ʻApplicationInsights.xml`, mais il y a des articles que j'ai écrits dans le passé à ce sujet. Si vous regardez les endroits où vous ne l'aimez pas du tout, les applications Java ne sont pas populaires. solitaire. Nous en prenons autant que possible, y compris les inutiles, veuillez donc commenter si nécessaire.

Ainsi, après avoir donné la clé d'instrumentation et l'avoir exécutée, après un certain temps, cela ressemblera à ceci. La valeur par défaut est de collecter les compteurs toutes les 60 secondes.

image.png

Metaspace utilisé, Non Heap utilisé, Heap utilisé empilé (Metaspace utilisé et Non Heap utilisé ont des doublons, vous devez donc supprimer l'un ou l'autre ...)

Lors de l'agrégation de plusieurs métriques dans une seule Application Insight

Il devrait y avoir des cas où deux unités ou plus sont utilisées ou mises à l'échelle automatiquement, et que se passe-t-il dans ce cas?

Il existe une colonne appelée cloud_RoleInstance, qui contient le nom d'hôte de l'environnement d'exécution. En le divisant avec ceci, vous pouvez le voir pour chaque environnement. Ce qui suit est un cas où le nombre a été augmenté à 2 ou 3 en cours de route.

image.png

Faites de même avec Log Analytics

Log Analytics est derrière Application Insights, vous pouvez donc l'obtenir de la même manière.

//MEM Heap Used est affiché sous forme de graphique linéaire à intervalles d'une minute
performanceCounters 
| where name == 'MEM Heap Used'
| summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart 

Le résultat de l'exécution ressemble à ceci.

image.png

Paramètres d'alerte

Je ne l'écrirai pas car c'est ennuyeux, mais cela ressemble à une métrique pour Application Insights, donc je peux le faire correctement.

Recommended Posts

Collecte des compteurs de performances JVM avec Application Insights
Tracez le SQL exécuté avec l'agent java Application Insights