利用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程式
相關文章
- Java 監控基礎 - 使用 JMX 監控和管理 Java 程式Java
- 使用jvisualvm監控Java程式(本地和遠端)LVMJava
- Java效能監控工具:VisualVMJavaLVM
- 使用Metrics方法級遠端監控Java程式Java
- 使用 jvisualvm 遠端監控服務 JVM (jmx+jstatd)方法(k8s容器版)LVMJVMJSK8S
- 使用Metrics方法級遠端監控Java程式(優化)Java優化
- 利用nagios監控本地伺服器和遠端伺服器iOS伺服器
- 使用JMX Exporter監控Rainbond上的Java應用ExportAIJava
- 精密加工數控機床如何實現遠端監控和遠端上下載程式
- 利用btrace線上監控java程式狀態Java
- nagios的配置(監控端和被監控端)iOS
- junkman 遠端堆疊監控
- 影片監控遠端傳輸方案
- 遠端監控Springboot JVMSpring BootJVM
- 城市景觀智慧燈控系統如何遠端監控和控制
- 遠端影片監控實現的條件
- visualvm工具遠端對linux伺服器上的JVM虛擬機器進行監控與調優LVMLinux伺服器JVM虛擬機
- 基於VPN網路實現串列埠PLC的遠端監控和程式上下載串列埠
- linux遠端監控軟體nomachine的使用LinuxMac
- jvm系列(五):tomcat效能調優和效能監控(visualvm)JVMTomcatLVM
- 配電箱遠端監控物聯網解決方案(線上監控和運維管理)運維
- 物聯網雲平臺助力風機控制PLC遠端監控和遠端維護
- 施耐德PLC如何實現組態監控和遠端維護?
- 使用JAVA飛行器(JMC+JFR)遠端監控服務JVMJavaJVM
- rtop – 通過SSH監控遠端主機
- 在linux上使用VNC遠端監控LinuxVNC
- 使用JDK工具jmap和jhat監控Java程式JDKJava
- Python實現遠端埠監控例項Python
- 灌漿機遠端監控運維繫統運維
- 特奧配套用車遠端監控排程
- k8s的監控+HPAK8S
- 轉載]遠端執行程式碼的利用行程
- jvisualvm遠端監控Linux下的tomcatLVMLinuxTomcat
- Java程式監控指標Java指標
- 工業閘道器應用分享:PLC遠端監控與遠端維護
- java-jvisualvm遠端監控阿里雲伺服器上的TomcatJavaLVM阿里伺服器Tomcat
- 硬核工廠!鋼廠遠端監管,三維組態監控 HMI
- 工業機器人遠端監控系統方案機器人