Surveillez les applications Java avec jolokia et hawtio

introduction

Utilisez jolokia et hawtio pour obtenir des informations sur les MBeans dans les applications Java.

Qu'est-ce que Jolokia

Un agent Java pour accéder aux MBeans via http. Puisqu'il est accessible via http, les informations MBean peuvent être facilement collectées à l'aide de curl ou similaire. Les informations collectées seront renvoyées en JSON.

Qu'est-ce que Hawtio

hawtio est une console Web qui vous permet de surveiller et de gérer les applications Java. En standard, il prend en charge Tomcat, Apache Camel, Apache Active MQ, etc. D'autres applications Java peuvent également afficher les informations MBean et JVM acquises par JMX.

Dans JMX, hawtio ne communique pas avec l'application par JMX, mais une communication http avec le backend jolokia pour collecter les informations MBean et les afficher à l'écran. En d'autres termes, hawtio et jolokia peuvent être combinés pour accéder à une variété d'applications Java distantes via JMX.

Cette fois, en tant qu'application Java à surveiller, j'utiliserai kafka qui s'exécutait sur le serveur.

image.png

En outre, la procédure se référait à l'article suivant.

play + jolokia + hawtio

jolokia

Télécharger jolokia

Téléchargez l'agent de jolokia depuis le site suivant.

https://jolokia.org/download.html

image.png

Exécutez jolokia

jolokia peut être exécuté de manière autonome ou intégré dans une application Java.

(1) Exécutez jolokia autonome

Exécutez la commande suivante pour afficher la liste des processus de l'application Java.

# java -jar jolokia-jvm-1.6.0-agent.jar 
3906   kafka.Kafka ../config/server.properties
4229   jolokia-jvm-1.6.0-agent.jar
1039   org.apache.zookeeper.server.quorum.QuorumPeerMain /opt/kafka/config/zookeeper.properties

Les options de commande sont les suivantes.

Usage: java -jar jolokia-jvm-1.6.0-agent.jar [options] <command> <pid/regexp>
where <command> is one of
    start     -- Start a Jolokia agent for the process specified
    stop      -- Stop a Jolokia agent for the process specified
    status    -- Show status of an (potentially) attached agent
    toggle    -- Toggle between start/stop (default when no command is given)
    list      -- List all attachable Java processes (default when no argument is given at all)
    encrypt   -- Encrypt a password which is given as argument or read from standard input

Ensuite, exécutez jolokia comme suit. Le dernier "3906" est l'ID de processus de l'application Java à surveiller. "Http://127.0.0.1:8778/jolokia/" affiché à l'écran après l'exécution sera la destination d'accès à jolokia. L'ID utilisateur et le mot de passe pour l'authentification jolokia sont "jolokia".

# java -jar jolokia-jvm-1.6.0-agent.jar --user jolokia --password jolokia start 3906
Started Jolokia for PID 3906
http://127.0.0.1:8778/jolokia/

(2) Exécutez jolokia en l'incorporant dans une application Java

Ajoutez ce qui suit à vos options de démarrage Java: Changez le chemin de "jolokia-jvm-1.6.0-agent.jar" en fonction de votre environnement.

-javaagent:./jolokia-jvm-1.6.0-agent.jar=port=8778,host=localhost

Vérification de la version de Jolokia

Accédez à jolokia via http et essayez d'obtenir les informations de version.

# curl http://localhost:8778/jolokia/version
{"request":{"type":"version"},"value":{"agent":"1.6.0","protocol":"7.2","config":{"listenForHttpService":"true","maxCollectionSize":"0","authIgnoreCerts":"false","agentId":"192.168.10.141-4698-5b480cf9-jvm","debug":"false","agentType":"jvm","policyLocation":"classpath:\/jolokia-access.xml","agentContext":"\/jolokia","serializeException":"false","mimeType":"text\/plain","maxDepth":"15","authMode":"basic","discoveryEnabled":"true","streaming":"true","canonicalNaming":"true","historyMaxEntries":"10","allowErrorDetails":"true","allowDnsReverseLookup":"true","realm":"jolokia","includeStackTrace":"true","maxObjects":"0","useRestrictorService":"false","debugMaxEntries":"100"},"info":{"product":"jetty","vendor":"Eclipse","version":"9.2.24.v20180105"}},"timestamp":1542198764,"status":200}[root@kafkaserver1 ~]# 

Essayez d'obtenir des métriques

Ensuite, essayez d'accéder à jolokia via http pour obtenir les métriques.

# curl http://localhost:8778/jolokia/read/java.lang:type=Memory/NonHeapMemoryUsage
{"request":{"mbean":"java.lang:type=Memory","attribute":"NonHeapMemoryUsage","type":"read"},"value":{"init":2555904,"committed":53477376,"max":-1,"used":50092648},"timestamp":1542198810,"status":200}[root@kafkaserver1 ~]# 

Arrêtez jolokia (s'il fonctionnait en mode autonome)

Pour arrêter Jolokia, exécutez la commande suivante.

# java -jar jolokia-jvm-1.6.0-agent.jar stop 3906
Stopped Jolokia for PID 3906

Exécutez Hawtio

Télécharger hawtio

Téléchargez le module hawtio sur le site suivant. Cette fois, j'ai téléchargé "hawtio-app-2.3.0.jar".

https://github.com/hawtio/hawtio/releases

image.png

Exécutez Hawtio

Exécutez hawtio avec la commande suivante. "--Port 8090" spécifie le port utilisé par hawtio.

java -jar hawtio-app-2.3.0.jar --port 8090

hawtio: Don't cha wish your console was hawt like me!
=====================================================

Accéder à la console Web hawtio

L'URL de la console Web hawtio est la suivante.

http://localhost:8090/hawtio

Lorsque vous l'ouvrez avec un navigateur, l'écran suivant s'affiche.

image.png

J'essaierai de me connecter à jolokia immédiatement.

Tout d'abord, cliquez sur le bouton "Ajouter une connexion". Une boîte de dialogue permettant de saisir les informations de connexion jolokia s'affiche. Saisissez-la comme indiqué à l'écran.

image.png

Lorsque vous cliquez sur "Tester la connexion", la boîte de dialogue de saisie de l'ID utilisateur et du mot de passe de jolokia s'affiche. Saisissez le "jolokia" défini au démarrage de jolokia.

image.png

Si "Connecté avec succès" s'affiche, cela signifie qu'il a réussi. Enfin, cliquez sur le bouton "Ajouter".

image.png

Jetez un œil à Kafka

Cliquez sur le bouton "Connecter" pour ouvrir une autre fenêtre.

Vous pouvez voir les informations du MBean de kafka en sélectionnant l'onglet JMX.

image.png

Vous pouvez voir des informations sur les propriétés système de la JVM, les threads, l'histogramme de classe, etc. dans Runtime.

image.png

image.png

image.png

image.png

référence

Recommended Posts

Surveillez les applications Java avec jolokia et hawtio
Créez et testez des applications Java + Gradle avec Wercker
Utiliser java avec MSYS et Cygwin
Traçage distribué avec OpenCensus et Java
Installez Java et Tomcat avec Ansible
Transformez facilement les applications Java en Docker avec Jib
Utilisez JDBC avec Java et Scala.
Sortie PDF et TIFF avec Java 8
Crypter avec Java et décrypter avec C #
Lier le code Java et C ++ avec SWIG
Essayons WebSocket avec Java et javascript!
[Java] Lecture et écriture de fichiers avec OpenCSV
Application Java CICS-Run - (3) Gestion de build avec Gradle
Application Java CICS-Run - (2) Gestion de build avec Maven
Créer des applications Java avec IBM Cloud Functions
Les débutants créent des applications Web avec Java et MySQL (ajout à tout moment)
Essayez d'intégrer Ruby et Java avec Dapr
JSON avec Java et Jackson Part 2 XSS mesures
Java et JavaScript
XXE et Java
Préparer un environnement de scraping avec Docker et Java
KMS) Chiffrement d'enveloppe avec décryptage openssl et java
Crypter / décrypter avec AES256 en PHP et Java
[Java] Convertir et importer des valeurs de fichier avec OpenCSV
[Review] Lecture et écriture de fichiers avec java (JDK6)
[Java] Aligne les caractères même avec des caractères mixtes demi-largeur et pleine largeur
Utilisez Fast Mapping Livery MapStruct avec Lombok et Java 11
CI l'architecture des applications Java / Kotlin avec ArchUnit
Tableau 2D AtCoder ABC129 D résolu en Ruby et Java
Résumé du comportement de ToString avec les annotations Java et Groovy
Exécutez Maven sur Java 8 lors de la compilation sur Java 6 et des tests sur Java 11
Résolution avec Ruby, Perl et Java AtCoder ABC 128 C
Surveillez l'état interne des programmes Java avec Kubernetes
[Java] Se référer et définir des variables privées avec réflexion
Je veux faire des transitions d'écran avec kotlin et java!
Préparer l'environnement pour java11 et javaFx avec Ubuntu 18.4
Application de reconnaissance faciale conçue avec Amazon Rekognition et Java
[Java] Développement avec plusieurs fichiers en utilisant package et import
Java EE sans serveur à partir de Quarkus et Cloud Run
Installez java avec Homebrew
Getter et Setter (Java)
Changer de siège avec Java
[Java] Thread et exécutable
Installez Java avec Ansible
Java vrai et faux
[Java] Comparaison des chaînes de caractères et && et ||
Téléchargement confortable avec JAVA
Changer java avec direnv
Java - Sérialisation et désérialisation
[Java] Arguments et paramètres
Téléchargement Java avec Ansible
timedatectl et Java TimeZone
[Java] Branchement et répétition
Raclons avec Java! !!
Construire Java avec Wercker
[Java] Types de variables et types
java (classe et instance)
[Java] Surcharge et remplacement
Conversion Endian avec JAVA
Surveillez les modifications du code source avec Guard-Shell et créez et exécutez automatiquement
Stocker dans une carte Java 2D et tourner avec pour instruction