11

我正在尝试找到一种解决方案,让我可以监控服务器的资源消耗。最好,我想要获得的指标是网络利用率 IO,如果可能的话,CPU 使用率/负载平均值和磁盘 IO。

我唯一的其他要求是这些信息可以通过 Java 获得,以便可以对其进行操作,并且至少可以在 Linux (Fedora) 上运行。

我听说过一些监控工具,但我不确定解决这个问题的最佳方法。我可能希望每 30 秒收集一次信息。

谢谢

更新:只是重申一下,我指的是系统范围的监控而不是 Java 特定的监控。我只想使用 Java 访问这些指标

4

7 回答 7

3

您可以选择将监控委托给CactiCentreonZenoss等专用工具,但这对于单个应用程序来说可能有点矫枉过正。

对于一个简单的解决方案,JMX 确实可能是一个更好的解决方案。作为起点,我建议阅读以下文章:使用 JMX 1.2 和 JConsole 监控本地和远程应用程序。然后,看一下Using JConsole to Monitor Applications,这是一篇非常详细的文章,展示了如何使用 JConsole 访问 Java 平台提供的几个核心监控和管理功能,包括:

  • 检测内存不足
  • 启用或禁用 GC 和类加载详细跟踪
  • 检测死锁
  • 控制应用程序中任何记录器的日志级别
  • 访问操作系统资源——Sun 的平台扩展
  • 管理应用程序的托管 Bean (MBean)

但是,AFAIK,JMX 不会让您访问网络 IO,因此您可能需要这些工具的组合。幸运的是,许多工具(例如 Cacti、SmokePing)使用 RDD 格式,您可以使用JRobinrdd4j等 Java API 轻松操作这些格式。

于 2009-09-10T14:06:16.580 回答
2

我越来越喜欢collectd,这是一个模块化的 C 守护程序,专注于使用大量插件进行监控(而不是图形) :

将指标导入 Java 代码似乎有几种选择:

  • 在进程中,使用前面提到的Java 插件注册一个写回调来接收来自其他各种插件的数据
  • 通过网络,将jcollectd(collectd 协议的 Java 实现)嵌入到您的应用程序中
  • 间接地,通过写入 CSV 或 RRD 文件并使用 Java 的各种 RRD 实现之一
于 2010-10-26T20:53:24.763 回答
2

只是想把 RHQ (http://rhq-project.org/ ) 混在一起 :-)

于 2011-01-26T14:28:59.117 回答
1

您可以考虑使用Ganglia监控工具。它使用 XML 进行数据表示,因此我想从 Java 访问数据会相当简单,而且它的设计具有高度可扩展性,有可能记录大量服务器指标。机器。

于 2009-09-10T13:53:31.727 回答
0

您最好的选择可能是在 /proc 中查看所有系统资源的使用情况 /proc/cpuinfo 和 /proc/net/ 是一个不错的起点。

于 2009-09-10T12:35:14.147 回答
0

Runtime.exec("some command") 有什么问题?

于 2010-10-25T23:50:33.810 回答
-1

我不确定这是否有助于您的查询。恕我直言,Cacti 和 Centreon 似乎太复杂了,无法为像您这样简单的要求投入时间。有更简单的工具用于服务器监控,例如New RelicSeaLion。海狮是我目前最喜欢的。它提供了简单的默认命令,涵盖了大多数基本要求(可能也会涵盖您的要求)。它的设置也非常简单,而且是免费的。你可以试试这些。

于 2013-11-27T05:48:48.837 回答