Мониторинг веб-приложения Java - правильный выбор JMX? - PullRequest
12 голосов
/ 08 января 2010

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

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

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

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

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

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

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

Заранее спасибо,

Адам.

Ответы [ 2 ]

9 голосов
/ 08 января 2010

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

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

1 голос
/ 08 января 2010

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

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

...