Мониторинг веб-приложения Java - это правильный выбор JMX?

У нас есть веб-приложение Java, и мы хотели бы настроить некоторый базовый мониторинг с целью расширения этого мониторинга в будущем. Наш план таков:

(1) Соберите общую информацию (например, память и потоки) о виртуальной машине веб-контейнера, в которой выполняется приложение.

(2) Контролируйте "состояние" приложения. Это довольно расплывчато, но, по крайней мере, мы хотели бы видеть, все еще остается в сети и может отвечать на запросы.

(3) В будущем мы хотели бы получить больше информации, которая относится к нашему приложению. Опять же, это довольно расплывчато, но вы можете предположить, что мы можем захотеть сделать определенную статистику, собранную внутри приложения, доступной для поддержки.

Обычно веб-приложение будет развернуто в среде Tomcat 5.5 или 6. Быстрый поиск в Интернете показывает, что JMX может быть включен для Tomcat и что JConsole затем может использоваться для подключения к серверу. Это дает нам массу информации, которая решает точку (1). Кроме того, некоторая информация доступна в разделе MBeans для "Каталины" и свертывается на этом, я могу, например, посмотреть, сколько запросов получил определенный сервлет. Это не совсем то, что мы хотим для точки (2), но, по крайней мере, дает нам некоторую информацию. Там, похоже, довольно много информации, но довольно сложно интерпретировать ее с помощью JConsole. Возможно, есть лучший инструмент для интерпретации MBeans, открытых Tomcat.

Для точки (3), на первый взгляд, мы можем написать собственные MBeans, а затем сделать их доступными для чего-то вроде JConsole. Лично это привлекло бы меня к тому, чтобы я узнал о JMX, который я очень рад сделать, но у меня есть проблема. Оглянувшись, я заметил, что большинство учебников по этому вопросу не обновлялись в течение нескольких лет, и инструменты с открытым исходным кодом, похоже, томятся без последних обновлений. Поэтому мой главный вопрос - простой. Как вы оцениваете JMX? Есть ли у него будущее или оно/было заменено чем-то другим? Учитывая, что у нас уже есть наше веб-приложение, но мы начинаем с нуля для консоли управления, следует ли выбрать JMX или есть что-то более подходящее для лучшего будущего?

Я задаю этот вопрос без личного топора, чтобы размалывать, мне просто интересно услышать ваши мнения и переживания. Я уверен, что нет ни одного правильного ответа, но я думаю, что полезное обсуждение было бы полезно.

Спасибо заранее,

Адам.

Ответ 1

JMX, безусловно, является хорошим решением. Я бы не стал беспокоиться о том, что он томится. Большинство предприятий, с которыми я работал недавно, используют (или планируют использовать) JMX, и я должен был бы услышать довольно убедительный аргумент, прежде чем выбрать что-то еще в мире Java. Легко писать клиенты (решения для мониторинга), и вы можете очень легко вернуть сложные данные. Большинство сторонних компонентов поддерживают мониторинг через JMX.

Обратите внимание, что вы можете рассмотреть возможность интеграции с любыми существующими решениями управления (например, Nagios, BNC Patrol, HP Openview и т.д.). Возможно, они не настолько осведомлены о Java, но предпочитают тесты, такие как простое HTTP-соединение для тестирования, если веб-сайт работает (легко используя Nagios), или интеграции с использованием SNMP (в котором Openview говорит изначально).

Ответ 2

Если это применимо к вашей ситуации (Java 6 update 10 JDK или более поздняя версия, плюс на одном компьютере), тогда рассмотрите возможность использования jvisualvm вместо этого, поскольку он может копать еще глубже, чем JConsole.

Вы можете обнаружить, что самый простой способ сделать то, что вам нужно, - это плагин для jvisualvm, зная ваше приложение.