jvisualvm 通过jstatd方式监控k8s 里的容器
jvisualvm 通过 jstatd连接 远程jvm
·
jvisualvm , jstatd 与k8s
jvisual 2种连接方式
jviaualvm 有2中连接方式, jmx, jstatd
通过jmx 方式, 无法使用profiling 功能, jstatd 可以(jvm 版本必须支持, 发现openjdk 不支持)
jmx 通过 在jvm 启动时,添加jmx 参数来启动监听端口
jstatd 通过 jstatd 命令来启动rmi server , jstatd 会监听2个端口, 一个是1099 (可以通过参数改变, 用来控制指令), 一个随机端口(这个端口是用来传输数据的,猜测),
用jstatd 来连接k8s 里, pod 中的容器
k8s 里要想用jstatd , 必须把这2个端口都暴露出来, 另外在k8s 里, 映射出去的随机端口必须跟目标端口一样,否则jvisualvm 能连上, 但无法扫描到remote host 里的applications .每次重新启动jstatd , 都会重新生成一个新的随机端口, 需要更改k8s nodeport 设置,把随机端口暴露出去。
具体步骤
1. 在目标pod 里,对应container 里启动jstatd
2. netstat -alp |grep jstatd 查看 jstatd 的2个端口, 一个1099, 一个随机端口
3. 创建2个nodeport , 暴露目标pod 的 2个端口,(1099 , 与随机端口), 暴露端口时, 1099, 可以映射成不同的端口, 但随机端口必须与原始随机端口一样。
4. 用jvisualvm , jstatd 连接方式连接目标pod 所在的node
5. 连接后, 等3s , 会自动把目标container 上的java application 显示在 node 下
更多推荐
已为社区贡献3条内容
所有评论(0)