Java程序监视系统健康状况的最佳方法是什么?

我希望能够从基于Java的系统内部监控我的主要系统健康指标。 主要兴趣点包括CPU温度,主板温度,风扇速度等。

是否有可用的包:

  1. 使这种数据可用于Java?
  2. 适用于Windows或Linux或两者兼容?
  3. 是开放/免费/便宜?

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控制台 )。

你会发现最接近的是Hyperic Sigar库:

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

它没有达到AFAIK的温度,但确实向您显示了许多本机属性,如CPU,内存,磁盘I / O,网络I / O等。它已移植到人们今天部署Java的大多数架构中。 许可证是GPL,但我认为您也可以购买商业许可证。

我们使用Sigar和Terracotta进行集群监控,并对此非常满意。

我相信大多数此类事情通常是通过SNMP(专业系统)完成的,这是通过基于标准的方式提供此类信息的常用方法。 JMX也可通过SNMP获得。 那么问题就变成了,哪个是更好的Java SNMP库(你的系统是否支持它)?

几个月前,我找了一个这样的图书馆,我发现没有什么有趣的。 创建一个并非不可能,所以我建议这样做。 您可能需要访问本机库,使用JNA (它比JNI更容易)。 首先在一个平台上添加对一些内容的支持,然后开始添加对其他function和平台的支持。

与我们分享! 人们将开始使用它,甚至可能帮助开发,很快你就会拥有一个function齐全的Java系统监控库。

JMX + JNI = YourSolution