Überwachen Sie Java-Anwendungen mit Jolokia und Hawtio

Einführung

Verwenden Sie jolokia und hawtio, um Informationen zu MBeans in Java-Anwendungen abzurufen.

Was ist Jolokia?

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.

Was ist Hawtio?

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.

image.png

Darüber hinaus bezog sich das Verfahren auf den folgenden Artikel.

play + jolokia + hawtio

jolokia

Laden Sie jolokia herunter

Laden Sie den Agenten von jolokia von der folgenden Website herunter.

https://jolokia.org/download.html

image.png

Führen Sie Jolokia aus

jolokia kann eigenständig ausgeführt oder in eine Java-Anwendung eingebettet werden.

(1) Führen Sie Jolokia eigenständig aus

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/

(2) Führen Sie jolokia aus, indem Sie es in eine Java-Anwendung einbetten

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

Jolokia Versionsprüfung

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, Metriken zu erhalten

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 ~]# 

Stoppen Sie Jolokia (wenn es eigenständig lief)

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

Führen Sie hawtio aus

Laden Sie hawtio herunter

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

image.png

Führen Sie hawtio aus

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!
=====================================================

Greifen Sie auf die Hawtio-Webkonsole zu

Die URL der hawtio-Webkonsole lautet wie folgt.

http://localhost:8090/hawtio

Wenn Sie es mit einem Browser öffnen, wird der folgende Bildschirm angezeigt.

image.png

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.

image.png

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.

image.png

Wenn "Erfolgreich verbunden" angezeigt wird, ist dies erfolgreich. Klicken Sie abschließend auf die Schaltfläche "Hinzufügen".

image.png

Schauen Sie sich Kafka an

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.

image.png

In Runtime können Sie Informationen zu den Systemeigenschaften, Threads, dem Klassenhistogramm usw. der JVM anzeigen.

image.png

image.png

image.png

image.png

Referenz

Recommended Posts

Überwachen Sie Java-Anwendungen mit Jolokia und Hawtio
Erstellen und testen Sie Java + Gradle-Anwendungen mit Wercker
Verwenden Sie Java mit MSYS und Cygwin
Verteilte Ablaufverfolgung mit OpenCensus und Java
Installieren Sie Java und Tomcat mit Ansible
Verwandeln Sie Java-Anwendungen mit Jib ganz einfach in Docker
Verwenden Sie JDBC mit Java und Scala.
PDF und TIFF mit Java 8 ausgeben
Mit Java verschlüsseln und mit C # entschlüsseln
Verknüpfen Sie Java- und C ++ - Code mit SWIG
Probieren wir WebSocket mit Java und Javascript aus!
[Java] Lesen und Schreiben von Dateien mit OpenCSV
CICS-Java-Anwendung ausführen- (3) Build-Management mit Gradle
CICS-Java-Anwendung ausführen- (2) Build-Management mit Maven
Erstellen Sie Java-Anwendungen mit IBM Cloud-Funktionen
Anfänger erstellen Web-Apps mit Java und MySQL (jederzeit hinzufügen)
Versuchen Sie, Ruby und Java in Dapr zu integrieren
JSON mit Java und Jackson Teil 2 XSS-Maßnahmen
Java und JavaScript
XXE und Java
Bereiten Sie eine Scraping-Umgebung mit Docker und Java vor
KMS) Umschlagverschlüsselung mit OpenSL- und Java-Entschlüsselung
Verschlüsseln / Entschlüsseln mit AES256 in PHP und Java
[Java] Konvertieren und Importieren von Dateiwerten mit OpenCSV
[Review] Lesen und Schreiben von Dateien mit Java (JDK6)
[Java] Richten Sie Zeichen auch mit gemischten Zeichen halber und voller Breite aus
Verwenden Sie die schnelle Mapping-Bibliothek MapStruct mit Lombok und Java 11
CI die Architektur von Java / Kotlin-Anwendungen mit ArchUnit
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
Zusammenfassung des ToString-Verhaltens mit Java- und Groovy-Annotationen
Führen Sie Maven unter Java 8 aus, während Sie unter Java 6 kompilieren und unter Java 11 testen
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.
Überwachen Sie den internen Status von Java-Programmen mit Kubernetes
[Java] Verweisen Sie auf und setzen Sie private Variablen mit Reflektion
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Bereiten Sie die Umgebung für Java11 und JavaFx mit Ubuntu 18.4 vor
Gesichtserkennungs-App mit Amazon Rekognition und Java
[Java] Entwicklung mit mehreren Dateien mittels Paket und Import
Serverloses Java EE beginnend mit Quarkus und Cloud Run
Installieren Sie Java mit Homebrew
Getter und Setter (Java)
Wechseln Sie die Plätze mit Java
[Java] Thread und ausführbar
Installieren Sie Java mit Ansible
Java wahr und falsch
[Java] Vergleich von Zeichenketten und && und ||
Bequemer Download mit JAVA
Schalten Sie Java mit direnv
Java - Serialisierung und Deserialisierung
[Java] Argumente und Parameter
Java-Download mit Ansible
timedatectl und Java TimeZone
[Java] Verzweigen und Wiederholen
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
[Java] Variablen- und Typtypen
Java (Klasse und Instanz)
[Java] Überladen und überschreiben
Endian-Konvertierung mit JAVA
Überwachen Sie Quellcodeänderungen mit der Guard-Shell und erstellen und führen Sie sie automatisch aus
In Java 2D-Karte speichern und mit for-Anweisung drehen