我们正在为十几个客户运行服务器集群。每个客户在 Jetty 上都有一些应用程序服务器。这里重要的是:
- 有许多 Java 进程需要监控。
- 我需要能够按机器和客户对它们进行分组(切片)(一台机器可以服务多个客户,每个客户有很多机器)。
- 我还需要收集和显示一些特定于域的每个客户数据。
我更愿意使用 JMX 公开它们,尽管我仍然可以自由地使用其他合理的解决方案。
我可以使用什么(最好是免费和开源)服务器进行监控?我需要一些东西来从所有这些服务器收集信息,保留历史记录,并让我编写自定义仪表板进行演示。
我考虑过的一个解决方案是 Hyperic,但它确实很笨重,而且插件开发也很糟糕。
最佳答案
你可能想尝试 Nagios/Centreon 来做这种事情 - 你可以用 Java 为其编写插件(要么让 NRPE 运行连接到你的服务器的 Java 程序,要么运行实现 NRPE 协议(protocol)的 jNRPE,从而避免启动大量短命的 JVM) - 使用 JMX 命令行客户端(由 Internet Archive 等人制作)来查询 JMX beans。
当然还有 JConsole - 我相信您可以为此编写插件,但它可能无法胜任这项工作!
最后,jstat 会生成大量有关 GC 和相关进程的详细统计信息,您可以将其直接通过管道传输到文件。虽然不是很图形化。
关于java - Java 系统监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243601/