Verwenden Sie jolokia und hawtio, um Informationen zu MBeans in Java-Anwendungen abzurufen.
Ein Java-Agent für den Zugriff auf MBeans über http. Da der Zugriff über http möglich ist, können MBean-Informationen einfach mithilfe von Curl oder dergleichen erfasst werden. Die gesammelten Informationen werden in JSON zurückgegeben.
hawtio ist eine Webkonsole, mit der Sie Java-Anwendungen überwachen und verwalten können. Standardmäßig werden Tomcat, Apache Camel, Apache Active MQ usw. unterstützt. Andere Java-Anwendungen können auch MBean- und JVM-Informationen anzeigen, die von JMX erfasst wurden.
In JMX kommuniziert hawtio nicht über JMX mit der Anwendung, sondern über die http-Kommunikation mit dem Backend-Jolokia, um MBean-Informationen zu sammeln und auf dem Bildschirm anzuzeigen. Mit anderen Worten, Hawtio und Jolokia können kombiniert werden, um über JMX auf eine Vielzahl von Remote-Java-Anwendungen zuzugreifen.
Dieses Mal werde ich als zu überwachende Java-Anwendung versuchen, sie mit kafka auszuführen, das zufällig auf dem Server ausgeführt wurde.
Darüber hinaus bezog sich das Verfahren auf den folgenden Artikel.
jolokia
Laden Sie den Agenten von jolokia von der folgenden Website herunter.
https://jolokia.org/download.html
jolokia kann eigenständig ausgeführt oder in eine Java-Anwendung eingebettet werden.
Führen Sie den folgenden Befehl aus, um die Prozessliste der Java-Anwendung anzuzeigen.
# 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
Die Befehlsoptionen sind wie folgt.
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
Führen Sie als Nächstes Jolokia wie folgt aus. Die letzte "3906" ist die Prozess-ID der zu überwachenden Java-Anwendung. "Http://127.0.0.1:8778/jolokia/", das nach der Ausführung auf dem Bildschirm angezeigt wird, ist das Zugriffsziel für jolokia. Die Benutzer-ID und das Kennwort für die Jolokia-Authentifizierung lauten "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/
Fügen Sie Ihren Java-Startoptionen Folgendes hinzu: Ändern Sie den Pfad von "jolokia-jvm-1.6.0-agent.jar" entsprechend Ihrer Umgebung.
-javaagent:./jolokia-jvm-1.6.0-agent.jar=port=8778,host=localhost
Greifen Sie über http auf jolokia zu und versuchen Sie, die Versionsinformationen abzurufen.
# 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 ~]#
Versuchen Sie als Nächstes, über http auf jolokia zuzugreifen, um die Metriken abzurufen.
# 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 ~]#
Führen Sie den folgenden Befehl aus, um Jolokia zu stoppen.
# java -jar jolokia-jvm-1.6.0-agent.jar stop 3906
Stopped Jolokia for PID 3906
Laden Sie das Hawtio-Modul von der folgenden Site herunter. Dieses Mal habe ich "hawtio-app-2.3.0.jar" heruntergeladen.
https://github.com/hawtio/hawtio/releases
Führen Sie hawtio mit dem folgenden Befehl aus. "--Port 8090" gibt den von hawtio verwendeten Port an.
java -jar hawtio-app-2.3.0.jar --port 8090
hawtio: Don't cha wish your console was hawt like me!
=====================================================
Die URL der hawtio-Webkonsole lautet wie folgt.
http://localhost:8090/hawtio
Wenn Sie es mit einem Browser öffnen, wird der folgende Bildschirm angezeigt.
Ich werde versuchen, mich sofort mit Jolokia zu verbinden.
Klicken Sie zunächst auf die Schaltfläche "Verbindung hinzufügen". Ein Dialogfeld zur Eingabe von Jolokia-Verbindungsinformationen wird angezeigt. Geben Sie diese wie auf dem Bildschirm angezeigt ein.
Wenn Sie auf "Verbindung testen" klicken, wird der Dialog zur Eingabe der Benutzer-ID und des Kennworts von jolokia angezeigt. Geben Sie das "jolokia" ein, das beim Starten von jolokia festgelegt wurde.
Wenn "Erfolgreich verbunden" angezeigt wird, ist dies erfolgreich. Klicken Sie abschließend auf die Schaltfläche "Hinzufügen".
Klicken Sie auf die Schaltfläche "Verbinden", um ein weiteres Fenster zu öffnen.
Sie können die Informationen der MBean von kafka anzeigen, indem Sie die Registerkarte JMX auswählen.
In Runtime können Sie Informationen zu den Systemeigenschaften, Threads, dem Klassenhistogramm usw. der JVM anzeigen.
Recommended Posts