博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用VisualVm和JMX远程监控K8S里的Java进程
阅读量:7050 次
发布时间:2019-06-28

本文共 2374 字,大约阅读时间需要 7 分钟。

在和里介绍了如何使用VisualVm+JMX监控远程Java进程的方法。那么如何监控一个运行在K8S集群中的Java进程呢?其实大致方法也是类似的。

非SSL JMX连接

如果采用非SSL JMX连接,那么你只需要这么几步就可以让你本地的VisualVm连接到K8S集群里的Java进程了。

Step1 修改Deployment.yaml,添加以下System Properties

-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.port=1100-Dcom.sun.management.jmxremote.rmi.port=1100-Djava.rmi.server.hostname=localhost

注意,-Djava.rmi.server.hostname一定要设置成localhost

Step2 修改Deployment.yaml,添加Container Port

containers:- name: ...  image: ...  ports:  - containerPort: 1100    name: tcp-jmx

Step3 部署Deployment

Step4 利用kubectl转发端口

kubectl -n 
port-forward
1100

Step5 启动VisualVm,创建JMX连接localhost:1100

SSL JMX连接

启用SSL JMX连接,那么需要增加三个步骤,步骤就稍微复杂一些,假设你已经根据创建好了java-appvisualvm的keystore和truststore。

Step1 创建一个Secret包含java-app.keystorejava-app.truststore

kubectl -n 
create secret generic jmx-ssl \ --from-file=java-app.keystore \ --from-file=java-app.truststore

Step2 修改Deployment.yaml,把Secret挂载到容器内的/jmx-ssl目录下

containers: - name: ...   image: ...   volumeMounts:   - name: jmx-ssl-vol     mountPath: /jmx-ssl volumes: - name: jmx-ssl-vol   secret:     secretName: jmx-ssl

Step3 修改Deployment.yaml,添加以下System Properties

-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=1100-Dcom.sun.management.jmxremote.rmi.port=1100-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=true-Dcom.sun.management.jmxremote.registry.ssl=true-Dcom.sun.management.jmxremote.ssl.need.client.auth=true-Djavax.net.ssl.keyStore=/jmx-ssl/java-app.keystore-Djavax.net.ssl.keyStorePassword=
-Djavax.net.ssl.trustStore=/jmx-ssl/java-app.truststore-Djavax.net.ssl.trustStorePassword=
-Djava.rmi.server.hostname=localhost

注意,-Djava.rmi.server.hostname一定要设置成localhost

Step4 修改Deployment.yaml,添加Container Port

containers:- name: ...  image: ...  ports:  - containerPort: 1100    name: tcp-jmx  ...

Step5 部署Deployment

Step6 利用kubectl转发端口

kubectl -n 
port-forward
1100

Step7 启动VisualVm,创建JMX连接localhost:1100

jvisualvm -J-Djavax.net.ssl.keyStore=
\ -J-Djavax.net.ssl.keyStorePassword=
\ -J-Djavax.net.ssl.trustStore=
\ -J-Djavax.net.ssl.trustStorePassword=

K8S样例配置文件

相关K8S样例配置文件在(用tomcat做的例子)。

转载地址:http://kwvol.baihongyu.com/

你可能感兴趣的文章
CentOS 7 开放防火墙端口 命令
查看>>
深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap
查看>>
HDU 1181 变形课 【DFS】
查看>>
MySQL事务
查看>>
7月26日实习日志
查看>>
Django之 路由系统
查看>>
UVa 679 Dropping Balls (例题 6-6)
查看>>
FileWriter写数据
查看>>
【Andorid X 项目笔记】TextView字幕效果(3)
查看>>
HDU 1002
查看>>
用Ruby批量获取电影的评分与影片信息
查看>>
练习markdown语法
查看>>
python 制作自定义包并安装到系统目录
查看>>
大文件排序问题
查看>>
php实现rar文件的读取和解压
查看>>
2014年天津市第一批科技计划项目
查看>>
@芥末的糖 ---------- node连接数据库两种方式mysql和moogoDB
查看>>
MongoDB 学习笔记2----条件操作符
查看>>
关于Hibernate5.x的那点事
查看>>
sk-learn 选择正确的估算器
查看>>