我希望能够从基于 Java 的系统内部监控我的主要系统健康指标。主要关注点包括CPU温度、主板温度、风扇转速等。
是否有可用的软件包:
- 使这种数据对 Java 可用?
- 适用于 Windows 或 Linux 或两者兼而有之?
- 开放/免费/便宜?
我希望能够从基于 Java 的系统内部监控我的主要系统健康指标。主要关注点包括CPU温度、主板温度、风扇转速等。
是否有可用的软件包:
您会发现最接近的是 Hyperic Sigar 库:
http://www.hyperic.com/products/sigar.html
AFAIK 并没有降低温度,但确实向您展示了许多本机统计数据,例如 CPU、内存、磁盘 I/O、网络 I/O 等。它已移植到人们今天部署 Java 的大多数架构中。许可证是 GPL,尽管我认为您也可以购买商业许可证。
我们使用 Sigar 和 Terracotta 进行集群监控,并且对它非常满意。
我相信大多数此类事情通常通过 SNMP(用于专业系统)完成,这是以基于标准的方式提供此类信息的常用方法。JMX 也可通过 SNMP 获得。那么问题就变成了,哪些是更好的 Java SNMP 库(您的系统是否支持它)?
Windows 和 Linux 都支持 MIB,它们通过 SNMP 公开您正在寻找的参数。此外,大多数主要供应商都为其服务器硬件发布了特殊的 MIB。
我已经使用商业iReasoning SNMP API实现了 SNMP MIB 和对 Java 应用程序的监控,它们运行良好。还有开源的SNMP4J,我个人没有经验,但看起来不错。
因此,根据您的需要,您可以为要监控的主机打开 SNMP 信息的发布。无需编码。这只是一个配置问题。
例如,对于 CPU 温度,您必须启用 MIB LM-SENSORS-MIB。在 Linux 下,您可以使用 snmpwalk 客户端查看 OID .1.3.6.1.4.1.2021.13.16.2.1.3 以查看 CPU 温度。一旦你完成了它并且你知道它正在正确地发布数据,你就可以开始实施你真正的监控解决方案。
您可以使用 Java SNMP 库来轮询和订阅您要监控的主机的 SNMP 陷阱。您还可以使用任何商业或开源监控工具(Google for SNMP 控制台)。
几个月前,我寻找这样的图书馆,但没有发现任何有趣的东西。创建一个并非不可能,因此我建议您这样做。您可能需要访问本机库,使用JNA(它比 JNI 更容易)来做到这一点。首先在一个平台上添加对一些东西的支持,然后开始添加对其他功能和平台的支持。
与我们分享吧!人们会开始使用它,甚至可能会帮助开发,很快你就会拥有一个功能齐全的 Java 系统监控库。