如何在不安装JDK的情况下监视JVM

时间:2014-07-28 06:41:53

标签: jvm monitoring

我想监视生产环境中的JVM性能。我只安装了JRE,而不是JDK,因此我不能使用jstat,jconsole等来监控JVM的性能。

有人可以帮助了解如何在这种情况下监控JVM性能吗?

有没有办法实现这个目标?

(请注意,我不想通过JMX或其他方式远程监控它。我想在每台机器上安装本地代理,它将以1分钟的间隔向服务器发送指标。)

谢谢, KS

3 个答案:

答案 0 :(得分:1)

如果您设法在VM上启动并运行JMX(来自评论),则可以使用jmxtermjmxfetch将这些JMX指标推送到指标系统(如石墨或Datadog) )。

答案 1 :(得分:0)

如果你有足够的耐心和时间写作,你可以看看JVMTI。您可以使用C / C ++编写代码并沿着Java Process运行它,并且可以在不影响JVM的情况下收集有关JVM的信息。

另一个简单而天真的方法是使用java编写的javaagent启动VM,但JVMTI甚至比这更好。 javaagent和JVMTI应用程序之间最重要的区别来自加载机制。代理程序在堆内部加载时,它们由同一JVM控制。而JVMTI代理不受JVM规则的约束,因此不受JVM内部(如GC或运行时错误处理)的影响。

如果您使用的是JDK7或更高版本,您甚至可以尝试使用Java Mission Control:)

答案 2 :(得分:0)

Jolokia是一个java代理,可以用来将JMX公开为http。运行jmx2graphite并将这些指标纳入Graphite。该链接包含有关Graphite安装(10分钟)的说明