Статьи

Удаленный JMX-мониторинг мул-экземпляра

В этом посте я опишу, как включить мониторинг удаленного экземпляра Mule с помощью JMX. Кроме того, я также включу веб-интерфейс MX4J, который будет предоставлять свойства JMX экземпляра Mule в веб-приложении, и я установлю агент Jolokia Mule, который позволяет использовать Hawtio для мониторинга экземпляра Mule.

Включение JMX для экземпляра Mule с помощью приложения Mule

На момент написания этой статьи наилучшей гранулярностью, для которой может быть включен мониторинг JMX, является целый экземпляр Mule. Таким образом, невозможно включить мониторинг JMX для каждого приложения в экземпляре Mule.
Это, конечно, имеет свои преимущества и недостатки, и мы собираемся использовать этот факт в своих интересах, развернув приложение на сервере Mule, который делает только мониторинг JMX для сервера.

  • Создайте каталог с именем «MuleJMXEnabler».
  • В этом новом каталоге создайте файл с именем «mule-config.xml» со ​​следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:management="http://www.mulesoft.org/schema/mule/management"
    xmlns:spring="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/corehttp://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/managementhttp://www.mulesoft.org/schema/mule/management/current/mule-management.xsd">

    <management:jmx-server>
        <management:connector-server
            url="service:jmx:rmi:///jndi/rmi://192.168.1.73:1096/jmxrmi"/>
    </management:jmx-server>
</mule>
  • В приведенном выше файле замените IP-адрес «192.168.1.73» на внешний IP-адрес или DNS-имя компьютера, на котором запущен сервер Mule, который вы хотите отслеживать.
  • При желании вы можете изменить номер порта 1096 на любой порт, который вы предпочитаете использовать.
  • Разверните приложение, скопировав каталог MuleJMXEnabler с его содержимым в каталог приложений экземпляра Mule, который необходимо отслеживать.
  • Убедитесь, что приложение было успешно развернуто в журнале экземпляра Mule (mule.log, если вы используете версию для сообщества, mule_ee.log, если вы используете версию для предприятия).
    Вы должны увидеть что-то вроде этого:
    INFO  2014-08-24 16:24:24,009 [Mule.app.deployer.monitor.1.thread.1]
    org.mule.module.launcher.MuleDeploymentService: ==================
    New Exploded Application: MuleJMXEnabler
    INFO  2014-08-24 16:24:24,010 [Mule.app.deployer.monitor.1.thread.1]
    org.mule.module.launcher.application.DefaultMuleApplication: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + New app 'MuleJMXEnabler'                                 +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    INFO  2014-08-24 16:24:24,668 [Mule.app.deployer.monitor.1.thread.1]
    org.mule.module.launcher.MuleDeploymentService: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Started app 'MuleJMXEnabler'                             +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Выше приведена минимальная конфигурация, необходимая для включения удаленного доступа JMX к экземпляру Mule.
Попробуйте подключиться к экземпляру Mule, используя какое-либо приложение для мониторинга JMX, например JVisualVM или Java Mission Control . Следующие шаги описывают, как это сделать при использовании Java Mission Control:

  • Запустите Java Mission Control.
  • Щелкните правой кнопкой мыши на панели браузера JVM и выберите «Новое соединение».
  • В поле Хост введите IP-адрес или DNS-имя, которое вы использовали ранее в файле mule-config.xml.
    В моем случае это будет «192.168.1.73».
  • В поле Порт введите номер порта, который вы также указали в файле mule-config.xml ранее.
    В моем случае это было «1096».
  • Нажмите кнопку Проверить соединение.
    Статус должен быть сообщен как ОК, как на этом рисунке.

jmc_new_connection

  • Нажмите кнопку Готово.
    Теперь вы готовы подключиться к MBean-серверу экземпляра Mule и начать его мониторинг.

Преимущество этого подхода состоит в том, что он позволяет изменять конфигурацию JMX экземпляра Mule без необходимости перезапуска. Если я хочу внести какие-либо изменения в конфигурацию JMX, включить или отключить JMX в экземпляре Mule, я просто отредактирую файл mule-config.xml в каталоге apps / MuleJMXEnabler в доме экземпляра Mule и сохраню его. Если горячее развертывание не было отключено, сервер Mule автоматически повторно развернет приложение и получит изменения.

Включение JMX для экземпляра Mule с использованием параметров оболочки

Одной из альтернатив для включения мониторинга JMX экземпляра Mule, с которым я добился успеха, является добавление набора параметров Java VM в файл конфигурации оболочки экземпляра Mule.
Файл конфигурации оболочки называется «wrapper.conf» и находится в каталоге conf экземпляра Mule.
Чтобы включить удаленный доступ JMX, добавьте следующие дополнительные параметры JVM в ваш файл wrapper.conf:

# Enables remote JMX management without authentication or SSL over
port 1096.
wrapper.java.additional.4=-Dcom.sun.management.jmxremote
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.port=1096
wrapper.java.additional.6=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.8=-Djava.rmi.server.hostname=192.168.1.73

Важные заметки!

  • Вы ДОЛЖНЫ настроить нумерацию дополнительных параметров JMV, как описано в комментариях в файле wrapper.conf!
    Таким образом, 4, 5, 6, 7 и 8 могут быть неправильными числами для вашего файла wrapper.conf.
  • Вы должны изменить IP-адрес на удаленный IP-адрес компьютера, на котором работает сервер Mule.
  • Вы можете изменить номер порта.
  • Экземпляр Mule должен быть перезапущен после изменений, чтобы они вступили в силу.

Недостаток этого подхода заключается в том, что экземпляр Mule необходимо перезапускать каждый раз, когда происходит изменение параметров конфигурации, связанных с JMX.

На целевом компьютере под управлением Mac OS X мне нужно выбрать один из двух описанных способов включения удаленного мониторинга JMX — если я использую параметры оболочки, приложение MuleJMXEnabler не запустится должным образом.
В Ubuntu я могу выбрать любой из двух подходов, но также смог использовать оба подхода одновременно без ошибок.

Включение веб-интерфейса MX4J

Если вы используете первый подход, включив JMX с помощью приложения Mule, то добавление следующего XML-элемента в файл mule -config.xml в качестве дочернего элемента элемента < mule > включает веб-интерфейс MX4J, открывающий компоненты JMX объекта Мул экземпляр в вопросе:

<management:jmx-mx4j-adaptor
    jmxAdaptorUrl="http://192.168.1.73:1100">
</management:jmx-mx4j-adaptor>

Как и прежде, IP-адрес необходимо изменить на внешний IP-адрес компьютера, на котором запущен экземпляр Mule. Номер порта может быть изменен с 1100 на любой свободный порт, который вы предпочитаете использовать.
В моем случае доступ к веб-интерфейсу MX4J можно получить по URL-адресу http://192.168.1.73:1100.

Установите Jolokia Mule Agent

При первом подходе к включению JMX в экземпляре Mule, описанном выше, вы также можете включить Jolokia — мост JMX-HTTP, который позволяет использовать Hawtio — расширяемую веб-консоль управления для приложений Java.

Заметка!

Версия 1.2.2 агента Jolokia Mule, которая на момент написания статьи была последней, не работает с Mule 3.5 из-за того, что библиотеки Jetty были обновлены с версии 6 до версии 8.

В этом примере я использовал Mule 3.4, последнюю версию Mule, в которой все еще используются библиотеки Jetty 6, насколько я знаю.

  • Загрузите агента Jolokia Mule с http://www.jolokia.org/download.html
  • Переместите JAR-файл агента в каталог lib / opt в экземпляре Mule, который вы хотите отслеживать.
  • Добавьте следующую конфигурацию в качестве дочернего элемента элемента <mule> в mule-config.xml созданного ранее приложения MuleJMXEnabler:
    Номер порта может быть изменен по желанию.
<custom-agent name="jolokia-agent"
class="org.jolokia.mule.JolokiaMuleAgent">
    <spring:property name="port" value="1095"/>
</custom-agent>
  • Откройте URL-адрес http://192.168.1.73:1095/jolokia/ в веб-браузере. Обратите внимание, что вам нужно изменить IP-адрес на удаленный IP-адрес компьютера, на котором запущен экземпляр Mule, и порт на номер порта, указанный в конфигурации ранее. Если агент Jolokia был успешно включен, вы должны увидеть что-то вроде этого в вашем веб-браузере:
    {"timestamp":1408898064,"status":200,"request":{"type":"version"},"value":{"protocol":"7.2","config":{"maxDepth":"5","maxObjects":"10000","historyMaxEntries":"10","agentId":"192.168.1.73-1277-41c62ae4-mule","agentType":"servlet","debug":"false","debugMaxEntries":"100"},"agent":"1.2.2","info":{"product":"jetty","vendor":"Mortbay","version":"6.1.26"}}}

Имея агента Jolokia, мы можем отслеживать экземпляр Mule с помощью Hawtio:

  • Загрузите JAR Hawtio с http://hawt.io/getstarted/index.html
  • Запустите Hawtio с помощью команды «java -jar hawtio-app-1.4.17.jar» (имя файла JAR должно совпадать с именем файла, который вы скачали ранее).
  • Hawtio должен открыть веб-браузер и отобразить страницу приветствия.
    Если нет, попробуйте URL http: // localhost: 8080 / hawtio / welcome
  • Нажмите кнопку «Подключиться» в верхнем левом углу веб-страницы Hawtio.
  • Нажмите кнопку Remote.
  • Справа введите удаленный IP-адрес компьютера, на котором работает экземпляр Mule, в поле Хост. 192.168.1.73 в моем случае.
  • Введите порт, 1095 в моем случае, из файла конфигурации в поле Порт.
  • Убедитесь, что флажок Использовать прокси установлен.

hawtio_connect

  • Нажмите кнопку Подключиться к удаленному серверу.
  • В вашем браузере должно открыться новое окно или вкладка.
  • Нажмите кнопку Dashboard в верхнем левом углу.
    Теперь вы должны увидеть информацию о целевом компьютере, такую ​​как использование процессора и памяти.
  • Нажмите кнопку JMX рядом с кнопкой панели инструментов.
    Здесь вы найдете обычные функции управления JMX.
    Нажмите кнопку Threads рядом с кнопкой JMX.
    Эта вкладка показывает информацию о различных потоках, запущенных в целевой JVM.

Заключительные слова

Есть еще несколько вещей, которые нужно настроить, но я надеюсь, что это поможет вам начать удаленный мониторинг JMX экземпляра Mule. Оттуда вы можете начать изменять параметры, добавлять безопасность и т. Д. В соответствии с вашими требованиями.

Более подробную информацию о Mule JMX Management можно найти здесь: http://www.mulesoft.org/documentation/display/current/JMX+Management

Веб-страницу Oracle по технологии JMX можно найти здесь: http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html

Наконец, учебник по Oracle JMX можно найти здесь: http://docs.oracle.com/javase/tutorial/jmx/