В этом посте я опишу, как включить мониторинг удаленного экземпляра 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». - Нажмите кнопку Проверить соединение.
Статус должен быть сообщен как ОК, как на этом рисунке.
- Нажмите кнопку Готово.
Теперь вы готовы подключиться к 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 в моем случае, из файла конфигурации в поле Порт.
- Убедитесь, что флажок Использовать прокси установлен.
- Нажмите кнопку Подключиться к удаленному серверу.
- В вашем браузере должно открыться новое окно или вкладка.
- Нажмите кнопку 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/