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




Несколько месяцев назад я искал такую библиотеку и ничего интересного не нашел. Создать его не невозможно, поэтому я бы рекомендовал это сделать. Возможно, вам понадобится доступ к собственным библиотекам, для этого используйте JNA (это проще, чем JNI). Начните с добавления поддержки нескольких вещей на одной платформе, а затем начните добавлять поддержку других функций и платформ.
Поделитесь этим с нами! Люди начнут его использовать, возможно, даже помогут с разработкой, и вскоре у вас будет полнофункциональная библиотека системного мониторинга для Java.
Самое близкое, что вы найдете, - это библиотека Hyperic Sigar:
http://www.hyperic.com/products/sigar.html
Он не сводится к температурам AFAIK, но показывает вам ряд нативных статистических данных, таких как процессор, память, дисковый ввод-вывод, сетевой ввод-вывод и т. д. Он перенесен на большинство архитектур, на которых сегодня разворачивается Java. Лицензия - GPL, хотя я думаю, что вы также можете купить коммерческие лицензии.
Мы используем Sigar с Terracotta для мониторинга кластера, и нам это очень понравилось.
Я считаю, что большая часть такого рода вещей обычно выполняется через SNMP (для профессиональных систем) - это обычный способ сделать такую информацию доступной на основе стандартов. JMX также доступен через SNMP. Тогда возникает вопрос: какие библиотеки SNMP для Java лучше (и поддерживает ли это ваша система)?
Как Windows, так и Linux поддерживают MIB, которые предоставляют параметры, которые вы ищете, через 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 чтобы увидеть температуру процессора. Как только вы это сделаете и узнаете, что данные публикуются правильно, вы можете приступить к реализации своего реального решения для мониторинга.
Вы можете использовать библиотеку SNMP Java для опроса и подписки на ловушки SNMP для хостов, которые вы хотите отслеживать. Вы также можете использовать любой коммерческий инструмент или инструмент мониторинга с открытым исходным кодом (Google для Консоль SNMP).
Температура процессора - это то, что нам особенно нужно, поэтому это серьезное ограничение.