在利用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-appvisualvm的keystore和truststore。

Step1 创建一个Secret包含java-app.keystorejava-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进程相关推荐

  1. java jmx 监控_利用VisualVm和JMX远程监控Java进程

    在前一篇文章里我们发现通过jstatd + VisualVm的方式,不能获得Java进程的CPU.线程.MBean信息,这时JMX就要登场了. 自Java 6开始,Java程序启动时都会在JVM内部启 ...

  2. 使用VisualVM、JMC远程监控JVM

    2019独角兽企业重金招聘Python工程师标准>>> 简介 VisualVM is a visual tool integrating commandline JDK tools ...

  3. linux jmx 端口,JMX远程监控JVM

    远程监控JVM状态需要在JVM启动的时候需要加上一段代码开启这个功能.(以下全部以Ubuntu-14-04-server.jdk1.8.tomcat7.0环境为基础) 配置的时候分两种情况:1.无需配 ...

  4. 使用JDK自带的jmap和jhat监控处于运行状态的Java进程

    对于处于运行状态中的Java进程,JDK自带了很多工具,允许Java开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等. 本文基于JDK1.8而写成. 我下面写 ...

  5. 如何通过JMX远程监控Solr?

    2019独角兽企业重金招聘Python工程师标准>>> 有时候,我们在服务器端部署了JAVA程序,而又想在windows上监控这个程序的JVM的情况,该如何操作呢? 答案就是通过JM ...

  6. Tomcat打开远程调试和jmx远程监控

    远程Debug打开 在catalina.sh中去掉下面的注释,重启后生效. CATALINA_OPTS="$CATALINA_OPTS "-server" "- ...

  7. java jmx 开启_开启JMX远程监控

    参考: 1. 启动参数java -server -Xms256M -Xmx256M -Xss256K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M ...

  8. Windows下使用Jconsole远程监控Linux系统中java服务器资源占用情况

    1.首先需要停止正在运行的服务:resin-XXX stop 2.然后在Linux的服务器启动项中添加如下信息: -Djava.rmi.server.hostname=192.168.1.122-Dc ...

  9. 配置JMC远程监控linux上的java程序

    被监测服务jar包需要加启动参数: -Dcom.sun.management.jmxremote.port=9999(被监测jmc端口) -Dcom.sun.management.jmxremote. ...

最新文章

  1. oracle x6-2能装2008吗,Sun服务器电源Oracle Server X6-2原装拆机7079395 600 AC
  2. 一周冲刺计划第七天11.21
  3. 爱上MVC~ajax调用分部视图session超时页面跳转问题
  4. 2021-07-03
  5. 1023 组个最小数 (20 分)(c语言)
  6. 简单的前端上传图片代码
  7. c语言 sizeof_c语言详解sizeof
  8. 需求分析:每个产品经理都应掌握的需求核心组件分析
  9. idea中java没有run_idea 右键项目没有run 运行选项
  10. usb接口供电不足_主板接口不认识?一分钟带你了解电脑主板接口
  11. Linux Fedora8 下安装 IE6
  12. 有关C#中的引用类型的内存问题
  13. mysql for CodeSmith
  14. java 什么是过滤器_java中的过滤器是什么
  15. Python ---太空射击游戏
  16. 安全系统工程徐志胜电子版_安全系统工程-第3版
  17. python 自然语言处理 形态学
  18. latex参考文献居中_LaTeX中参考文献管理以及注意事项
  19. 计算机毕设——手机天气预报系统
  20. 野火STM32寄存器点亮LED灯详解

热门文章

  1. 2018 Python 开发者调查报告发布,数据出乎你意料吗?
  2. 区块链开发中的9大应用场景
  3. ubuntu下make无法安装的问题
  4. 关于学习新知识的一点想法
  5. 飞康力推“一次付费”的存储定价模式
  6. VC编译项目时缺少atlrx.h的解决办法
  7. 【Android】3.24 示例24--OpenGL绘制功能
  8. LIS 最长递增子序列问题
  9. 叫你怎么恢复回收站已清空文件(转)
  10. AndroidTestCase常用的两段配置