我们正在为十几个客户运行服务器集群。每个客户在Jetty上都有一些应用服务器。这里重要的是:
我更愿意用JMX公开它们,尽管我仍然可以使用其他合理的解决方案。
我可以使用什么(最好是免费和开源)服务器进行监控?我需要能从所有这些服务器收集信息,保留历史记录,然后让我编写自定义仪表板进行演示。
我考虑过的一个解决方案是Hyperic,但它真的很笨拙,插件开发很糟糕。
答案 0 :(得分:0)
您可能想尝试Nagios / Centreon这样的事情 - 您可以用Java编写插件(要么运行NRPE来运行连接到服务器的Java程序,要么运行实现NRPE协议的jNRPE,从而避免启动大量短期JVM) - 使用JMX命令行客户端(由Internet Archive等人制作)来查询JMX bean。
当然还有JConsole - 我相信你可以为此编写插件,但它可能无法胜任工作!
最后,jstat会生成很多关于GC和相关进程的很好的统计信息,您可以将它们直接传递给文件。虽然不是很图形化。
答案 1 :(得分:0)
如果您研究基于JMX的解决方案,可以尝试查看Manageengine。或者,您可以使用Graylog2来使用基于Syslog或AMQP的解决方案。
答案 2 :(得分:0)
您可以尝试使用BTrace从Jetty实例中获取所需的指标。 BTrace会将其输出记录到一组文件中,然后可以将其自动导入/导出到监视应用程序中。
我在InfoQ写了一篇关于BTrace的文章,可能对你很有帮助:http://www.infoq.com/articles/java-profiling-with-open-source
使用BTrace的好处是您可以以任何您喜欢的格式登录,并且您可以将指标分组以满足您的要求。
在文章中,它解释了如何使用EurekaJ对收集的指标进行分组,可视化和提醒。
您可以按自己喜欢的方式对指标进行分组:
使用BTrace,您可以从JVM中获得所需的任何内容,方法执行时间,内存使用情况,线程等。
答案 3 :(得分:0)
使用Nagios或其衍生物/分叉(Opsview,Icinga)
您可以设置双向监控
nagios不仅会以这种方式监控您的java进程,还会监控您在您的业务中运行的任何其他服务(HTTP,FTP,SMTP服务)以及一般的健康状况(CPU,内存,负载平均值)