Utilisez jolokia et hawtio pour obtenir des informations sur les MBeans dans les applications Java.
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.
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.
En outre, la procédure se référait à l'article suivant.
jolokia
Téléchargez l'agent de jolokia depuis le site suivant.
https://jolokia.org/download.html
jolokia peut être exécuté de manière autonome ou intégré dans une application Java.
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/
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
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 ~]#
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 ~]#
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
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
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!
=====================================================
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.
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.
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.
Si "Connecté avec succès" s'affiche, cela signifie qu'il a réussi. Enfin, cliquez sur le bouton "Ajouter".
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.
Vous pouvez voir des informations sur les propriétés système de la JVM, les threads, l'histogramme de classe, etc. dans Runtime.
Recommended Posts