java 如何在运行JVM时启用JMX/管理代理?

c8ib6hqw  于 2023-02-28  发布在  Java
关注(0)|答案(2)|浏览(222)

我正在尝试从当前运行的JVM中获取JMX指标。我希望能够在运行应用程序时无需在CLI上启用它即可完成此操作。我正在尝试编写一个通用的CLI实用程序,其中一些功能是JConsole和JMC所缺少的。JConsole和JMC都可以完成此操作。但是,似乎没有任何文档说明它们是如何完成此操作的。

2g32fytz

2g32fytz1#

视情况而定。如果您只想从本地运行的应用程序获取它,您可以使用attach API。以下是如何使用attach API运行诊断命令的示例:
http://hirt.se/blog/?p=542
您还可以使用附加API获取存根以进行本地JMXRMI通信。
如果要启动远程代理,可以使用jcmd和ManagementAgent.start diagnostic命令执行此操作。

rdrgkggo

rdrgkggo2#

对于cli应用程序开发人员来说有点离题,但对命令行用户可能有用:
您可以使用jcmd命令激活/停用正在运行的JVM的“远程侦听JMX代理”,该JVM是在没有任何关于JMX的特定内容的情况下启动的。命令必须在与目标jvm相同的主机上运行,并且使用相同的用户
启用JMX代理:

jcmd <jvm_pid> ManagementAgent.start \
    jmxremote.port=<listen_on_tcp_port> \
    jmxremote.authenticate=false \
    jmxremote.ssl=false

禁用JMX代理:

jcmd <jvm_pid> ManagementAgent.stop

相关问题