我正在尝试找到一种解决方案,让我可以监控服务器的资源消耗。最好,我想要获得的指标是网络利用率 IO,如果可能的话,CPU 使用率/负载平均值和磁盘 IO。
我唯一的其他要求是这些信息可以通过 Java 获得,以便可以对其进行操作,并且至少可以在 Linux (Fedora) 上运行。
我听说过一些监控工具,但我不确定解决这个问题的最佳方法。我可能希望每 30 秒收集一次信息。
谢谢
更新:只是重申一下,我指的是系统范围的监控而不是 Java 特定的监控。我只想使用 Java 访问这些指标
我正在尝试找到一种解决方案,让我可以监控服务器的资源消耗。最好,我想要获得的指标是网络利用率 IO,如果可能的话,CPU 使用率/负载平均值和磁盘 IO。
我唯一的其他要求是这些信息可以通过 Java 获得,以便可以对其进行操作,并且至少可以在 Linux (Fedora) 上运行。
我听说过一些监控工具,但我不确定解决这个问题的最佳方法。我可能希望每 30 秒收集一次信息。
谢谢
更新:只是重申一下,我指的是系统范围的监控而不是 Java 特定的监控。我只想使用 Java 访问这些指标
您可以选择将监控委托给Cacti、Centreon或Zenoss等专用工具,但这对于单个应用程序来说可能有点矫枉过正。
对于一个简单的解决方案,JMX 确实可能是一个更好的解决方案。作为起点,我建议阅读以下文章:使用 JMX 1.2 和 JConsole 监控本地和远程应用程序。然后,看一下Using JConsole to Monitor Applications,这是一篇非常详细的文章,展示了如何使用 JConsole 访问 Java 平台提供的几个核心监控和管理功能,包括:
- 检测内存不足
- 启用或禁用 GC 和类加载详细跟踪
- 检测死锁
- 控制应用程序中任何记录器的日志级别
- 访问操作系统资源——Sun 的平台扩展
- 管理应用程序的托管 Bean (MBean)
但是,AFAIK,JMX 不会让您访问网络 IO,因此您可能需要这些工具的组合。幸运的是,许多工具(例如 Cacti、SmokePing)使用 RDD 格式,您可以使用JRobin或rdd4j等 Java API 轻松操作这些格式。
只是想把 RHQ (http://rhq-project.org/ ) 混在一起 :-)
您可以考虑使用Ganglia监控工具。它使用 XML 进行数据表示,因此我想从 Java 访问数据会相当简单,而且它的设计具有高度可扩展性,有可能记录大量服务器指标。机器。
您最好的选择可能是在 /proc 中查看所有系统资源的使用情况 /proc/cpuinfo 和 /proc/net/ 是一个不错的起点。
Runtime.exec("some command") 有什么问题?