Java Management Extensions ( JMX ) - это технология Java, которая предоставляет инструменты для управления и мониторинга приложений , системных объектов, устройств (например, принтеров ) и сервисно-ориентированных сетей. Эти ресурсы представлены объектами, называемыми MBeans (для Managed Bean ). В API классы можно динамически загружать и создавать экземпляры. Приложения для управления и мониторинга можно разрабатывать и разрабатывать с помощью Java Dynamic Management Kit. [1]
JSR 003 [2] процесса сообщества Java определяет JMX 1.0, 1.1 и 1.2. JMX 2.0 разрабатывался под JSR 255, но впоследствии этот JSR был отозван. [3] JMX Remote API 1.0 для удаленного управления и мониторинга указан в JSR 160. [4] Расширение JMX Remote API для веб-служб разрабатывалось под JSR 262. [5]
Ранее принятый сообществом J2EE , JMX является частью J2SE, начиная с версии 5.0. «JMX» является товарным знаком Oracle Corporation .
Архитектура [ править ]
JMX использует трехуровневую архитектуру:
- Уровень зонда, также называемый уровнем инструментария, содержит зонды (так называемые MBeans ), инструменты для анализа ресурсов.
- Уровень агента , или MBeanServer - ядро JMX. Он действует как посредник между MBean и приложениями.
- Уровень удаленного управления позволяет удаленным приложениям получать доступ к MBeanServer через соединители и адаптеры. Коннектор обеспечивает полный удаленный доступ к API MBeanServer с использованием различных средств связи ( RMI , IIOP , JMS , WS- * …), в то время как адаптер адаптирует API к другому протоколу ( SNMP ,…) или к веб-интерфейсу ( HTML / HTTP). , WML / HTTP ,…).
Приложения могут быть общими консолями (такими как JConsole [6] и MC4J [7] ) или приложениями для конкретных областей (мониторинг). Внешние приложения могут взаимодействовать с MBean-компонентами посредством использования соединителей JMX и адаптеров протокола. Коннекторы служат для соединения агента с удаленным управляющим приложением с поддержкой JMX. Эта форма связи включает коннектор в JMX-агенте и клиент коннектора в управляющем приложении.
Адаптеры протокола обеспечивают представление управления агентом JMX через заданный протокол. Управляющие приложения, которые подключаются к адаптеру протокола, обычно относятся к данному протоколу.
Управляемые компоненты [ править ]
Управляемый компонент - иногда просто называют MBean - это тип JavaBean , созданный при инъекции зависимостей . Управляемые компоненты особенно используются в технологии Java Management Extensions, но с Java EE 6 спецификация обеспечивает более подробное значение управляемого компонента.
MBean представляет собой ресурс, работающий на виртуальной машине Java , такой как приложение или техническая служба Java EE (монитор транзакций, драйвер JDBC и т. Д.). Их можно использовать для сбора статистики по таким проблемам, как производительность, использование ресурсов или проблемы (вытягивание); для получения и настройки конфигурации или свойств приложения (push / pull); и уведомление о событиях, таких как сбои или изменения состояния (push).
Java EE 6 предусматривает, что управляемый компонент - это компонент, который реализуется классом Java, который называется его классом компонента. Класс Java верхнего уровня является управляемым компонентом, если он определен как управляемый компонент в любой другой спецификации технологии Java EE (например, в спецификации технологии JavaServer Faces ), или если он соответствует всем следующим условиям:
- Это не нестатический внутренний класс.
- Это конкретный класс или аннотированный
@Decorator
. - Он не аннотируется аннотацией, определяющей компонент EJB, и не объявляется как класс EJB-компонента в
ejb-jar.xml
.
Никакого специального объявления, такого как аннотация, для определения управляемого bean-компонента не требуется.
MBean может уведомлять MBeanServer о своих внутренних изменениях (для атрибутов), реализуя javax.management.NotificationEmitter
. Приложение, заинтересованное в изменениях MBean, регистрирует слушателя ( javax.management.NotificationListener
) на MBeanServer. Обратите внимание, что JMX не гарантирует, что слушатели получат все уведомления. [8]
Типы [ править ]
Есть два основных типа MBean:
- Стандартные MBean-компоненты реализуют бизнес-интерфейс, содержащий средства задания и получения для атрибутов и операций (т. Е. Методов).
- Динамические MBean-компоненты реализуют
javax.management.DynamicMBean
интерфейс, который обеспечивает способ перечисления атрибутов и операций, а также получения и установки значений атрибутов.
Дополнительные типы - это открытые компоненты MBean , MBean- компоненты модели и MBean- компоненты монитора . Открытые MBean- компоненты - это динамические MBean- компоненты, которые полагаются на основные типы данных. Они не требуют пояснений и более удобны для пользователя. Модельные MBean- компоненты - это динамические MBean- компоненты, которые можно настроить во время выполнения. Также предоставляется общий класс MBean для динамической настройки ресурсов во время выполнения программы.
MXBean ( Platform MBean ) - это особый тип MBean, который объединяет подсистемы виртуальной машины Java, такие как сборка мусора , JIT-компиляция , пулы памяти , многопоточность и т. Д.
MLet ( апплет управления ) - это служебный компонент MBean для загрузки, создания экземпляра и регистрации компонентов MBean в MBeanServer из описания XML . Формат дескриптора XML: [9]
<КОД MLET = '' класс '' | ОБЪЕКТ = '' серфайл '' АРХИВ = '' archiveList '' [CODEBASE = '' codebaseURL ''] [NAME = '' objectName ''] [VERSION = '' version ''] > [список] </MLET>
Поддержка [ править ]
JMX поддерживается на разных уровнях разными поставщиками:
- JMX поддерживается серверами приложений Java, такими как OpenCloud Rhino Application Server [1] , JBoss , JOnAS , WebSphere Application Server , WebLogic , SAP NetWeaver Application Server , Oracle Application Server 10g и Sun Java System Application Server .
- JMX поддерживается сервером каталогов UnboundID, прокси-сервером каталогов и сервером синхронизации. [10]
- Инструменты управления системами , поддерживающие протокол, включают Empirix OneSight, GroundWork Monitor, Hyperic , HP OpenView , IBM Director , ITRS Geneos, Nimsoft NMS , OpenNMS , [11] Zabbix , Zenoss Core и Zyrion, SolarWinds , Uptime Infrastructure Monitor и LogicMonitor. [12]
- JMX также поддерживается контейнерами сервлетов, такими как Apache Tomcat . [13] & Jetty (веб-сервер)
- MX4J [2] - это JMX с открытым исходным кодом для корпоративных вычислений.
- jManage [3] - это консоль JMX корпоративного уровня с открытым исходным кодом с веб-интерфейсами и интерфейсами командной строки.
- MC4J [4] - это визуальная консоль с открытым исходным кодом для подключения к серверам, поддерживающим JMX.
- snmpAdaptor4j [5] - это открытый исходный код, обеспечивающий простой доступ к MBeans по протоколу SNMP.
- jvmtop - это легкий инструмент мониторинга JMX с открытым исходным кодом для командной строки.
- Prometheus может принимать данные JMX через экспортер JMX [14], который предоставляет метрики в формате Prometheus.
См. Также [ править ]
- Джини
- Управление сетью
- Простой протокол управления сетью
Ссылки [ править ]
- ^ «Обзор Java Dynamic Management Kit» . docs.oracle.com . Проверено 12 января 2021 года .
- ^ JSR 003: Спецификация расширений управления JavaTM (JMXTM)
- ^ JSR 255: Спецификация расширений управления JavaTM (JMXTM), версия 2.0
- ^ JSR 160: Удаленный API расширений управления JavaTM (JMX)
- ^ JSR 262: Соединитель веб-служб для агентов Java Management Extensions (JMX)
- ^ Использование JConsole для мониторинга приложений
- ^ «Проект MC4J создает программное обеспечение управления для серверов приложений J2EE и других приложений Java» . Архивировано из оригинала на 2007-03-23 . Проверено 27 августа 2006 .
- ^ Расширения управления Java (JMX) - Лучшие практики
- ^ «MLet (Java 2 Platform SE 5.0)» . Sun Microsystems . Проверено 22 июня 2008 .
- ^ UnboundID Corp. Архивировано 06 марта 2012 г. на Wayback Machine
- ^ http://www.opennms.org/wiki/Category:JMX
- ^ "Сбор данных JMX" . www.logicmonitor.com . Проверено 20 ноября 2020 .
- ^ Apache Tomcat 6.0: мониторинг и управление Tomcat (руководство по Tomcat)
- ^ https://github.com/prometheus/jmx_exporter
Дальнейшее чтение [ править ]
Статьи [ править ]
- « Включение компонентных архитектур с помощью JMX », Марк Флери и Юха Линдфорс
- " Представляем новый API управления J2EE, не зависящий от поставщиков ", автор Андреас Шефер
- "Java в сфере управления" Макс Гофф 1999 г.
- 20 октября
- 20 ноя
- 29 декабря
- JMX / JBoss - The микроядро дизайн
- « Управляйте своими приложениями с поддержкой JMX с помощью jManage 1.0 », Ракеш Калра, 16 января 2006 г.
- " Управление системами J2EE с помощью JMX и JUnit " Лукас МакГрегор
- Sun Java: обзор мониторинга и управления
- Учебное пособие по Java EE 6: об управляемых bean-компонентах
Книги [ править ]
- Бенджамин Дж. Саллинс, Марк Б. Уиппл: JMX в действии: вы также получите и запустите свое первое приложение JMX , Manning Publications Co. 2002, ISBN 1-930110-56-1
- Дж. Стивен Перри : расширения управления Java , O'Reilly, ISBN 0-596-00245-9
- Джефф Хэнсон : Подключение клиентов и серверов JMX: понимание расширений управления Java , APress LP, ISBN 1-59059-101-1
- Марк Флери , Юха Линдфорс : JMX: управление J2EE с помощью расширений управления Java , Sams Publishing, ISBN 0-672-32288-9
Внешние ссылки [ править ]
- JMX 1.4 (JMX 1.4, часть Java 6)
- JMX на JBoss.com
- JMX на www.oracle.com
- JSR 255 (JMX 2.0)
- JSR 3 (JMX 1.0, 1.1 и 1.2)