利用VisualVm和JMX远程监控K8S里的Java进程
在利用VisualVm和JMX远程监控Java进程和VisualVm利用SSL连接JMX的方法里介绍了如 何使用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 <namespace> port-forward <pod-name> 1100
Step5 启动VisualVm,创建JMX连接localhost:1100
SSL JMX连接
启用SSL JMX连接,那么需要增加三个步骤,步骤就稍微复杂一些,假设你已经根据VisualVm利用SSL连接JMX的方法创建好了java-app
和visualvm
的keystore和truststore。
Step1 创建一个Secret包含java-app.keystore
和java-app.truststore
kubectl -n <namespace> 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=<keystore password>
-Djavax.net.ssl.trustStore=/jmx-ssl/java-app.truststore
-Djavax.net.ssl.trustStorePassword=<truststore password>
-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 <namespace> port-forward <pod-name> 1100
Step7 启动VisualVm,创建JMX连接localhost:1100
jvisualvm -J-Djavax.net.ssl.keyStore=<path to visualvm.keystore> \-J-Djavax.net.ssl.keyStorePassword=<visualvm.keystore的密码> \-J-Djavax.net.ssl.trustStore=<path to visualvm.truststore> \-J-Djavax.net.ssl.trustStorePassword=<visualvm.truststore的密码>
K8S样例配置文件
相关K8S样例配置文件在这里(用tomcat做的例子)。
本文转自中文社区-利用VisualVm和JMX远程监控K8S里的Java进程
利用VisualVm和JMX远程监控K8S里的Java进程相关推荐
- java jmx 监控_利用VisualVm和JMX远程监控Java进程
在前一篇文章里我们发现通过jstatd + VisualVm的方式,不能获得Java进程的CPU.线程.MBean信息,这时JMX就要登场了. 自Java 6开始,Java程序启动时都会在JVM内部启 ...
- 使用VisualVM、JMC远程监控JVM
2019独角兽企业重金招聘Python工程师标准>>> 简介 VisualVM is a visual tool integrating commandline JDK tools ...
- linux jmx 端口,JMX远程监控JVM
远程监控JVM状态需要在JVM启动的时候需要加上一段代码开启这个功能.(以下全部以Ubuntu-14-04-server.jdk1.8.tomcat7.0环境为基础) 配置的时候分两种情况:1.无需配 ...
- 使用JDK自带的jmap和jhat监控处于运行状态的Java进程
对于处于运行状态中的Java进程,JDK自带了很多工具,允许Java开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等. 本文基于JDK1.8而写成. 我下面写 ...
- 如何通过JMX远程监控Solr?
2019独角兽企业重金招聘Python工程师标准>>> 有时候,我们在服务器端部署了JAVA程序,而又想在windows上监控这个程序的JVM的情况,该如何操作呢? 答案就是通过JM ...
- Tomcat打开远程调试和jmx远程监控
远程Debug打开 在catalina.sh中去掉下面的注释,重启后生效. CATALINA_OPTS="$CATALINA_OPTS "-server" "- ...
- java jmx 开启_开启JMX远程监控
参考: 1. 启动参数java -server -Xms256M -Xmx256M -Xss256K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M ...
- Windows下使用Jconsole远程监控Linux系统中java服务器资源占用情况
1.首先需要停止正在运行的服务:resin-XXX stop 2.然后在Linux的服务器启动项中添加如下信息: -Djava.rmi.server.hostname=192.168.1.122-Dc ...
- 配置JMC远程监控linux上的java程序
被监测服务jar包需要加启动参数: -Dcom.sun.management.jmxremote.port=9999(被监测jmc端口) -Dcom.sun.management.jmxremote. ...
最新文章
- oracle x6-2能装2008吗,Sun服务器电源Oracle Server X6-2原装拆机7079395 600 AC
- 一周冲刺计划第七天11.21
- 爱上MVC~ajax调用分部视图session超时页面跳转问题
- 2021-07-03
- 1023 组个最小数 (20 分)(c语言)
- 简单的前端上传图片代码
- c语言 sizeof_c语言详解sizeof
- 需求分析:每个产品经理都应掌握的需求核心组件分析
- idea中java没有run_idea 右键项目没有run 运行选项
- usb接口供电不足_主板接口不认识?一分钟带你了解电脑主板接口
- Linux Fedora8 下安装 IE6
- 有关C#中的引用类型的内存问题
- mysql for CodeSmith
- java 什么是过滤器_java中的过滤器是什么
- Python ---太空射击游戏
- 安全系统工程徐志胜电子版_安全系统工程-第3版
- python 自然语言处理 形态学
- latex参考文献居中_LaTeX中参考文献管理以及注意事项
- 计算机毕设——手机天气预报系统
- 野火STM32寄存器点亮LED灯详解