我试图find一个解决scheme,使我能够监视服务器的资源消耗。 最好,我想要获得的指标是networking利用率IO,如果可能的话,CPU利用率/负载平均值和磁盘IO。
我唯一的要求是这个信息可以通过Java获得,所以可以被操纵,至less在Linux(Fedora)上工作。
我听说过一些监控工具,但我不确定这个最好的方法。 我可能希望每隔30秒收集一次信息。
谢谢
更新:只是重新迭代,我指的是系统范围内的监控而不是Java特定的监控。 我只想用Java来访问这些指标
您可以选择将监视委托给像Cacti , Centreon或Zenoss这样的专用工具, 但这对于单个应用程序来说可能有点矫枉过正。
对于一个简单的解决方案,JMX可能确实是一个更好的解决方案 作为出发点,我建议阅读以下文章: 使用JMX 1.2和JConsole监视本地和远程应用程序 。 然后,查看使用JConsole监视应用程序 ,这是一篇非常详细的文章,展示了如何使用JConsole访问由Java平台提供的多个核心监视和管理功能,其中包括:
- 检测低内存
- 启用或禁用GC和类加载详细跟踪
- 检测死锁
- 控制应用程序中任何记录器的日志级别
- 访问操作系统资源 – Sun的平台扩展
- 管理应用程序的Managed Beans(MBeans)
但是,AFAIK,JMX不会让你访问网络IO,所以你可能需要结合使用这些工具。 幸运的是,许多工具(例如Cacti, SmokePing )使用RDD格式,您可以使用JRobin或rdd4j等Java API轻松进行操作。
只是想把RHQ(http://rhq-project.org/)混在一起:-)
你可以看看使用Ganglia监测工具。 它使用XML来表示数据,因此我认为从Java访问数据是相当简单的,而且还有其他优点,它被设计成具有高度可扩展性,可以记录大量的服务器指标机器。
我越来越喜欢collectd ,这是一个模块化的C守护进程,专注于监视(而不是绘制)多种插件 :
似乎有几个选项可以让你的Java代码得到指标:
你最好的选择可能会在/ proc中查看所有的系统资源使用情况/ proc / cpuinfo和/ proc / net /是一个很好的开始。
Runtime.exec有什么问题(“一些命令”)?
我不确定这是否有助于您的查询。 恕我直言,仙人掌和Centreon似乎太复杂,不能像你的要求那么简单。 有更简单的工具用于服务器监控,如New Relic和SeaLion 。 SeaLion是我目前最喜欢的。 它提供了简单的默认命令,涵盖了大部分的基本要求(也可能涵盖你的)。 这也是非常简单的设置和免费的。 你可以试试这些。