Системный монитор для Java - PullRequest
1 голос
/ 30 августа 2011

Мы работаем с кластерами серверов для десятка клиентов. У каждого клиента есть несколько серверов приложений на Jetty. Что здесь важно:

  • Существует множество процессов Java для мониторинга.
  • Мне нужно иметь возможность группировать (разрезать) их по машинам и по клиентам (одна машина может обслуживать много клиентов, а у каждого клиента есть много машин).
  • Мне также нужно собрать и отобразить некоторые специфичные для домена данные по каждому клиенту.

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

Какой (желательно бесплатный и открытый) сервер можно использовать для мониторинга? Мне нужно что-то, что будет собирать информацию со всех этих серверов, вести историю и позволить мне написать свою собственную панель мониторинга для презентации.

Одним из решений, которое я рассмотрел, является Hyperic, но оно действительно громоздкое, а разработка плагинов ужасна.

Ответы [ 4 ]

0 голосов
/ 27 июня 2013

Используйте Nagios или один из его производных / вилок (Opsview, Icinga)

Вы можете настроить двусторонний мониторинг

  1. Получите nagios, чтобы проверить, работают ли ваши экземпляры Jetty (ткните их, используя URL, и убедитесь, что вы получили ожидаемый положительный ответ). Существуют стандартные плагины для такого рода проверки активности
  2. Кроме того, попросите ваши процессы Java и веб-приложения отправлять оповещения (называемые пассивными проверками в Nagios), если что-то не так (вы можете использовать мою библиотеку https://code.google.com/p/jsendnsca/ для этого: -))

Таким образом, nagios будет следить не только за вашими процессами java, но и за любыми другими службами, которые вы используете в своем имуществе (службы HTTP, FTP, SMTP), а также за общим состоянием олова (CPU, Memory, Load Avg).

0 голосов
/ 30 августа 2011

Вы можете попытаться заглянуть в Manageengine , если посмотрите на решение на основе JMX.В качестве альтернативы вы можете использовать Graylog2 , чтобы получить решение на основе Syslog или AMQP.

0 голосов
/ 13 декабря 2011

Вы можете попробовать использовать BTrace для получения метрик, которые вы ищете, из ваших экземпляров Jetty. BTrace будет записывать свои выходные данные в набор файлов, которые впоследствии могут быть автоматически импортированы / экспортированы в приложение мониторинга.

Я написал статью о BTrace на InfoQ, которая может быть вам полезна: http://www.infoq.com/articles/java-profiling-with-open-source

Преимущество использования BTrace заключается в том, что вы можете войти в любой формат, какой захотите, и сгруппировать свои метрики в соответствии со своими требованиями.

В этой статье объясняется, как вы можете использовать EurekaJ для группировки, визуализации и оповещения о собранных показателях.

Вы можете группировать свои метрики так, как вам хочется:

  • CustomerName: машина: применение: путь до: Метрика
  • машина: приложение: клиент: путь до: Метрики
  • Приложение: машина: клиент: путь до: Метрика
  • и т.д..

С BTrace вы можете буквально получить все, что захотите, от ваших виртуальных машин Java, времени выполнения метода, использования памяти, потоков и т. Д.

0 голосов
/ 30 августа 2011

Возможно, вы захотите попробовать Nagios / Centreon для такого рода вещей - вы можете написать плагины для него на Java (либо получить NRPE для запуска программ Java, которые подключаются к вашему серверу, либо запустить jNRPE, который реализует протокол NRPE, что позволяет избежатьзапуск множества недолговечных JVM) - используйте клиент командной строки JMX (созданный кем-то вроде интернет-архива) для запроса bean-компонентов JMX.

Конечно, есть и JConsole - я считаю, что вы можете написать плагины для этого, но это может быть не до работы!

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

...