Получить информацию о потоках (процессоре, памяти), работающих на JVM (Jboss), и другую информацию о jvm
Я хочу написать приложение на Java, которое будет получать информацию о процессах и потоках, работающих на Jboss JVM (использование% CPU, памяти и т. Д.). Я также хочу найти информацию об использовании памяти и других важных вещах в JVM (JBoss). Как написать это в чистом Java?
Я знаю о таких вещах, как JConsole, но мне нужно написать это самому. Я нашел интерфейс java.lang.managament, который дает некоторую информацию о системе, памяти и т. Д., Но не вся необходимая информация предоставляется. Например, я хотел бы иметь возможность читать использование процессора (не время процессора) и память, используемую каждым потоком. (что-то вроде команды top в bash, но мне нужно сделать это в java).
Любая помощь?
РЕДАКТИРОВАТЬ: В конце концов я могу использовать некоторые библиотеки, чтобы получить эту информацию.
3 ответа
JBoss AS 7 предоставляет различные интерфейсы управления. Все интерфейсы управления основаны на представлении Detyped Management (jboss-dmr).
Вы можете реализовать пользовательский Java-клиент с помощью библиотеки jboss-dmr и jboss-as-controller-client. Для примера посмотрите наш репозиторий github.
Чтобы получить информацию о JVM и других вещах, вам необходимо выполнить следующую операцию:
ModelNode operation = new ModelNode();
operation.get("operation").set("read-resource");
operation.get("recursive").set(true);
operation.get("include-runtime").set(true);
ModelNode address = operation.get("address");
address.add("core-service", "platform-mbean");
Кроме того, вы также можете использовать PlatformMBeanServer:
//Get a connection to the JBoss AS MBean server on localhost
String host = "localhost";
int port = 9999; // management-native port
String urlString = "service:jmx:remoting-jmx://" + host + ":" + port;
JMXServiceURL serviceURL = new JMXServiceURL(urlString);
JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, null);
MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();
//Invoke on the JBoss AS MBean server
connection.getObjectInstance(new ObjectName("java.lang:type=Threading"));
//...
jmxConnector.close();
Вы можете попробовать Java Melody. Это очень хороший инструмент для мониторинга Java-приложений. проверить инструмент по ссылке ниже
https://code.google.com/p/javamelody/
-Sushitha
Как заявил Адам, существует несколько инструментов для мониторинга использования ресурсов java/jboss, еще один - JBoss RHQ.
Но если вам действительно нужно запрограммировать его самостоятельно, возможно, вы найдете некоторую полезную информацию, обращающуюся к jboss.system:type=ServerInfo mbean(проверьте его атрибуты, а также методы: listMemoryPools, listThreadCpuUtilization,listThreadDump ...). Вы можете получить к ним доступ с помощью консоли JMX или программно.