2008-09-22 1 views
9

Я хотел бы иметь возможность контролировать мои основные индикаторы состояния системы изнутри нашей системы на основе Java. Основные достопримечательности включают в себя температуру процессора, материнской платы температура, скорость вентилятора и т.д.Каков наилучший способ для программы Java отслеживать состояние системы?

Есть ли имеющийся пакет, который:

  1. делает этот вид данных, доступных для Java?
  2. Работает на Windows или Linux или на обоих?
  3. Открыт/бесплатно/дешево?

ответ

3

Есть MIB, поддерживаемые как Windows, так и Linux, которые выставляют параметры, которые вы ищете через SNMP. Кроме того, у большинства крупных поставщиков есть специальные MIB, опубликованные для их серверного оборудования.

Я реализовал SNMP MIB и мониторинг для приложений Java, используя коммерческий iReasoning SNMP API, и они отлично работали. Существует также открытый источник SNMP4J, с которым у меня лично нет опыта, но выглядит довольно хорошо.

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

Для температуры процессора, например, вы должны включить MIB LM-SENSORS-MIB. В Linux вы можете использовать клиент snmpwalk, чтобы посмотреть OID .1.3.6.1.4.1.2021.13.16.2.1.3 , чтобы увидеть температуру процессора. Как только вы это сделаете, и вы знаете, что публикация данных корректно, вы можете начать реализовывать свое реальное решение для мониторинга.

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

0

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

Поделиться им с нами! Люди начнут использовать его, возможно, даже помогут в разработке, и скоро у вас будет полнофункциональная библиотека мониторинга системы для Java.

+0

Спасибо, я никогда не слышал о JNA. – 2008-09-22 19:59:06

-1

JMX + JNI = YourSolution

+2

На самом деле это не ответ. У вас есть что-то конкретное в виду? – 2008-09-22 20:13:51

6

Ближайшей вещь, которую вы найдете это библиотека Hyperic Сигары:

http://www.hyperic.com/products/sigar.html

Это не спускайтесь до температуры AFAIK но показывает вам номер таких как центральный процессор, память, дисковый ввод-вывод, сетевой ввод-вывод и т. д. Он портирован на большинство архитектур, которые сегодня используют Java. Лицензия - это GPL, хотя я думаю, что вы также можете купить коммерческие лицензии.

Мы используем Sigar с Terracotta для мониторинга кластера и были очень довольны этим.

+1

Температура процессора - это то, что нам особенно необходимо, поэтому это основное ограничение. – 2008-09-22 23:25:18

5

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