JConsole 连接远程进程(JDK 8)

远程监控参数

启动 JVM 时添加以下参数以启用 JMX(Java Management Extensions)监控:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=PORT_NUMBER
-Dcom.sun.management.jmxremote.hostname=IP
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
  • PORT_NUMBER是 JMX 监听的端口号(例如 9999)
  • IP是程序所在主机的 IP 地址(例如 192.168.88.128)
  • -Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false用于禁用身份验证和 SSL(在生产环境中不推荐这样做,建议使用身份验证和 SSL)

注意确保防火墙放开对应 JMX 端口(如 9999)的入站连接。

启动 Java 应用程序

Java 应用程序使用上述参数启动。例如:

java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.hostname=192.168.88.128 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar your-application.jar

连接到远程地址

  • 在 JConsole 启动后,选择“远程进程”选项。

  • 输入远程主机的 IP 地址和 JMX 端口号,格式为:

    hostname:PORT_NUMBER

    例如:192.168.1.100:9999。

  • 点击“连接”,尝试连接到指定的远程 Java 应用程序。

开启身份验证

JConsole 连接远程进程时有输入用户名和口令的入口,上面的配置没有开启校验,所以不需要输入。

可以使用如下参数来开启身份验证:

-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access
  • -Dcom.sun.management.jmxremote.authenticate=true表示开启身份验证。
  • -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password表示身份验证信息文件为/path/to/jmxremote.password
  • Dcom.sun.management.jmxremote.access.file=/root/test/jmxremote.access表示权限控制文件为/path/to/jmxremote.access

jmxremote.password 文件

这个文件用于存储用户名和密码,格式如下:

username1 password1
username2 password2

示例:

admin secret123
user pass456
  • 注意:该文件必须具有严格的权限设置,通常只允许文件所有者读取。可以使用以下命令设置权限:
chmod 600 /path/to/jmxremote.password

jmxremote.access 文件

这个文件用于定义不同用户的访问权限,格式如下:

# 用户名 权限
username1 readwrite
username2 readonly

示例:

admin readwrite
user readonly

在这个示例中,admin 用户具有读写权限,而 user 用户只有只读权限。

此时,使用 JConsole 连接对应进程时,需要输入用户名和密码。

参考:ChatGPT

posted @   Higurashi-kagome  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
历史上的今天:
2022-08-20 Markdown 本地图片快速上传到博客园
点击右上角即可分享
微信分享提示