it-swarm.com.de

Können jconsole-Daten von der Befehlszeile abgerufen werden?

Ich verwende derzeit jconsole zur Überwachung der Leistungskennzahlen meiner Java-Anwendung und möchte script this Datenerfassung

Gibt es eine Möglichkeit, diese VM -Metriken (Speicherauslastung, Anzahl der Threads, CPU-Auslastung usw.) in STDOUT abzurufen?
Die Daten in top -p PID -b -n 1 schneiden sie nicht ganz ab.

Vielen Dank

29
Jonathan

jconsole stellt lediglich einen Wrapper für die JMX-MBeans bereit, die sich auf der Plattform MBeanServer befinden.

Sie können ein Programm schreiben, um eine Verbindung zu Ihrem VM mithilfe der Attach API herzustellen, die dann die MBeans abfragen würde.

Oder Sie können die Plattform MBeanServer über RMI verfügbar machen und die MBeans auf diese Weise abfragen.

Weitere Informationen finden Sie im Paket Java.lang.management

12
Kevin

Vielleicht ist jvmtop einen Blick wert.
Es ist ein Befehlszeilentool, das eine live-view für mehrere Metriken bereitstellt.

Beispielausgabe des Übersichtsmodus VM:

 JvmTop 0.4.1  AMD64  8 cpus, Linux 2.6.32-27, load avg 0.12
 http://code.google.com/p/jvmtop

  PID MAIN-CLASS      HPCUR HPMAX NHCUR NHMAX    CPU     GC    VM USERNAME   #T DL
 3370 rapperSimpleApp  165m  455m  109m  176m  0.12%  0.00% S6U37 web        21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager   11m   28m   23m  130m  0.00%  0.00% S6U37 web        31
19187 m.jvmtop.JvmTop   20m 3544m   13m  130m  0.93%  0.47% S6U37 web        20
16733 artup.Bootstrap  159m  455m  166m  304m  0.12%  0.00% S6U37 web        46
9
MRalwasser

Werfen Sie einen Blick auf jmap , mit dem Sie einen Heap-Dump von der Konsole erstellen können.

Für Daten, die nicht im Heap-Dump enthalten sind, glaube ich, dass Jconsole nur JMX verwendet, um eine Verbindung zur laufenden JVM herzustellen, um Statistiken zu erhalten. Daher ist es wahrscheinlich möglich, eine eigene Anwendung zu erstellen, die dieselben Arten von Statistiken von JMX abruft.

7
matt b

Sie können dieses jmx-Abfrage-Tool über die Befehlszeile verwenden: http://crawler.archive.org/cmdline-jmxclient/

7
user2427

Einige andere nützliche CLI-Tools zum Überwachen von Java-Anwendungen sind:

  • Jmxterm die vollen Zugriff auf alle MBeans auf dem Anwendungsserver gewährt, interaktiv ausgeführt wird oder nicht,
  • jmxbox kann nur über einen TCP - Socket eine Verbindung herstellen, nicht direkt mit einem lokalen Prozess mit seiner PID
5
Tonin

jvm-mon könnte dafür nützlich sein. Es handelt sich um ein JVM-Überwachungstool für die Befehlszeile, das die folgenden Einstellungen zulässt:

  • jvm-Prozesse
  • cPU- und GC-Nutzung
  • heap-Nutzung und Größe
  • oberfäden

Die Metriken und Diagramme werden aktualisiert, während das Tool geöffnet ist.

Probe:  jvm-mon

3
Andrejs

jstack bietet in seiner normalen Ausgabe eine Reihe nützlicher Informationsbits. Die Heap-Speichernutzung ist direkt verfügbar, aufgeschlüsselt nach GC-Region. Thread-Anzahl konnte mit etwas Perl/grep/etc. ermittelt werden.

2
Sbodd

Dies ist eine teilweise Antwort auf Ihre Frage:

set Java_OPTS=%Java_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m 
0
djangofan

Ich habe das Tomcat-jmxproxy erfolgreich für den Zugriff von Skripts verwendet ( http://Tomcat.Apache.org/Tomcat-6.0-doc/manager-howto.html#Using_the_JMX_Proxy_Servlet ).

Ich habe keine davon verwendet, aber eines der jmx-rest-Projekte könnte eine Option für einen Nicht-Tomcat-Server sein ( http://www.google.com/search?q=jmx+rest ).

0
llama