Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java实现简单的服务器监控_Java_Linux_Monitoring_Health Monitoring - Fatal编程技术网

用Java实现简单的服务器监控

用Java实现简单的服务器监控,java,linux,monitoring,health-monitoring,Java,Linux,Monitoring,Health Monitoring,我正试图找到一个解决方案,使我能够监控服务器的资源消耗。我希望获得的指标最好是网络利用率IO,如果可能的话,还有CPU使用率/负载平均值和磁盘IO 我唯一的另一个要求是,这些信息可以通过Java获得,因此可以对其进行操作,并且至少可以在Linux(Fedora)上工作 我听说过一些监控工具,但我不确定最好的方法是什么。我可能想每隔30秒收集一次信息 谢谢 更新:我只是重复一下,我指的是系统范围的监控,而不是特定于Java的监控。我只想使用Java来访问这些指标。您最好在/proc中查找您的所有系

我正试图找到一个解决方案,使我能够监控服务器的资源消耗。我希望获得的指标最好是网络利用率IO,如果可能的话,还有CPU使用率/负载平均值和磁盘IO

我唯一的另一个要求是,这些信息可以通过Java获得,因此可以对其进行操作,并且至少可以在Linux(Fedora)上工作

我听说过一些监控工具,但我不确定最好的方法是什么。我可能想每隔30秒收集一次信息

谢谢


更新:我只是重复一下,我指的是系统范围的监控,而不是特定于Java的监控。我只想使用Java来访问这些指标。您最好在/proc中查找您的所有系统资源使用情况/proc/cpuinfo和/proc/net/是一个很好的起点。

您可以研究使用监控工具。它使用XML作为其数据表示,因此我认为从Java访问数据会非常简单,而且它还有一些附加的优点,即它被设计为具有高度可伸缩性,有可能跨大量计算机记录服务器指标。

您可以选择将监控委托给一个专用工具,例如,或者,但对于单个应用程序来说,这可能有点过分

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

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

但是,顺便说一句,JMX不会让您访问网络IO,所以您可能需要这些工具的组合。幸运的是,许多工具(例如Cacti)都使用RDD格式,您可以使用Java API轻松地操作这些格式,如或。

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

我越来越喜欢它,它是一个模块化的C守护进程,重点是监视(而不是绘制)多种:

  • 阅读-常见的、、以及一些更有趣的功能,如通过嗅探数据包来监视,以及监视SSH登录尝试或传入电子邮件等
  • 写入-将读数发送到
  • 通知-通过或
  • 绑定-到和(最重要的是用于您的目的)
似乎有几种方法可以将度量值引入Java代码:

  • 在进程中,使用前面提到的方法注册一个写回调,以从各种其他插件接收数据
  • 通过网络,将(collectd协议的Java实现)嵌入到您的应用程序中
  • 间接地,通过写入CSV或RRD文件并使用Java的各种RRD实现之一

只想抛出RHQ(http://rhq-project.org/ )在混合中:-)

我不确定这是否有助于您的查询。IMHO Cacti和Centreon似乎太复杂了,无法为像您这样简单的需求投入时间。
有一些更简单的服务器监控工具,比如和。西莉安是我现在最喜欢的。它提供了简单的默认命令,涵盖了最基本的需求(可能也涵盖了您的需求)。它的设置也非常简单,而且是免费的。你可以试试这些。

你的问题不清楚。当你说“服务器”时,你是指“服务器进程”还是指服务器本身。听起来你指的是后者,但如果从你的角度来看,JMX答案(如下)指的是前者,我很抱歉,如果这不清楚的话——我指的是整个服务器,因为我本质上想知道服务器的运行状况,以便进行扩展。最重要的度量是网络利用。如果网络利用率是最重要的度量,我不确定JMX会帮助你,我会考虑使用Casic和java API来读取RDD数据。