利用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 遠端監控服務 JVM (jmx+jstatd)方法(k8s容器版)LVMJVMJSK8S
- 使用Metrics方法級遠端監控Java程式Java
- 使用JMX Exporter監控Rainbond上的Java應用ExportAIJava
- 精密加工數控機床如何實現遠端監控和遠端上下載程式
- 遠端監控Springboot JVMSpring BootJVM
- visualvm工具遠端對linux伺服器上的JVM虛擬機器進行監控與調優LVMLinux伺服器JVM虛擬機
- junkman 遠端堆疊監控
- jvisualvm遠端監控Linux下的tomcatLVMLinuxTomcat
- 影片監控遠端傳輸方案
- 城市景觀智慧燈控系統如何遠端監控和控制
- java-jvisualvm遠端監控阿里雲伺服器上的TomcatJavaLVM阿里伺服器Tomcat
- 遠端影片監控實現的條件
- 基於VPN網路實現串列埠PLC的遠端監控和程式上下載串列埠
- JConsole、VisualVM 依賴的 JMX 技術到底是什麼LVM
- 物聯網雲平臺助力風機控制PLC遠端監控和遠端維護
- 施耐德PLC如何實現組態監控和遠端維護?
- 使用JAVA飛行器(JMC+JFR)遠端監控服務JVMJavaJVM
- 配電箱遠端監控物聯網解決方案(線上監控和運維管理)運維
- 使用JDK工具jmap和jhat監控Java程式JDKJava
- rtop – 通過SSH監控遠端主機
- Python實現遠端埠監控例項Python
- Java程式監控指標Java指標
- 轉載]遠端執行程式碼的利用行程
- PIGOSS BSM 使用JMX實現中介軟體Tomcat監控GoTomcat
- 灌漿機遠端監控運維繫統運維
- k8s的監控+HPAK8S
- 基於PLC的物料分揀系統如何實現雲端監控和遠端維護
- Windows客戶端的JProfiler遠端監控Linux上的Tomcat伺服器Windows客戶端LinuxTomcat伺服器
- 工業閘道器應用分享:PLC遠端監控與遠端維護
- Java服務端監控:Prometheus與Grafana的整合Java服務端PrometheusGrafana
- SSH Exporter:基於Prometheus的遠端系統效能監控神器ExportPrometheus
- 工業機器人遠端監控系統方案機器人
- 在工業汙水處理中實現施耐德PLC的遠端監控和上下載
- PLC遠端監控有什麼方式?如何進行遠端上下載?
- Java程式碼中,如何監控Mysql的binlog?JavaMySql
- 數控磨床資料採集遠端監控物聯網系統
- Java監控神器之psi-probe監控Tomcat和應用JavaTomcat