通過jmx監控docker中的java應用


如給tomcat添加jmx。

添加位置見:https://www.cnblogs.com/augus007/articles/9018127.html

##添加jmx參數 
``` 

普通類型:

CATALINA_OPTS="/ 
-Dcom.sun.management.jmxremote.rmi.port=9090 / 
-Dcom.sun.management.jmxremote=true / 
-Dcom.sun.management.jmxremote.port=9090 / 
-Dcom.sun.management.jmxremote.ssl=false / 
-Dcom.sun.management.jmxremote.authenticate=false / 
-Dcom.sun.management.jmxremote.local.only=false / 
-Djava.rmi.server.hostname=192.168.99.100"   #直接寫物理機地址就行

特殊類型:

ENV CATALINA_OPTS="/   #為什么要加env,不知
-Dcom.sun.management.jmxremote.rmi.port=9090 / 
-Dcom.sun.management.jmxremote=true / 
-Dcom.sun.management.jmxremote.port=9090 / 
-Dcom.sun.management.jmxremote.ssl=false / 
-Dcom.sun.management.jmxremote.authenticate=false / 
-Dcom.sun.management.jmxremote.local.only=false / 
-Djava.rmi.server.hostname=192.168.99.100" 
EXPOSE 8080    #這下面的內容不懂
EXPOSE 9090 
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar 

``` 
>其中ava.rmi.server.hostname為docker的地址 

>注意,千萬設置jmx時不要使用JAVA_OPTS此參數,應當用CATALINA_OPTS 。因為tomcat可能通過JAVA_OPTS配置了jvm的參數,如果再設置成為JAVA_OPTS會將jvm參數覆蓋掉

#添加了以上內容后,啟動tomcat所在的docker,

docker run -d -p 80:8080  -p 9090:9090  --volume="/catalina.sh:/opt/tomcat/bin/catalina.sh" --name=tomcat docker.io/consol/tomcat-7.0   
#80端口是tomcat的服務映射端口
#9090端口是為了映射tomcat的jmx啟動的端口
#--volume 是為了將物理機中的catalina.sh(即:我們手動更改過的文件)映射到docke中去、

##jvisualvm 
本地命令行敲入jvisualvm打開 
- 添加遠程機器 
192.168.99.100 
- 添加jmx連接 
192.168.99.100:9090 
不要求SSL連接 
##查看mbean 
添加插件VisualVM-MBeans 
##參考文檔#### 
- [Monitoring Java Applications Running Inside Docker Containers](http://www.jamasoftware.com/blog/monitoring-java-applications/)

 

 如果你嫌棄上面方法麻煩,通過你的docker又是通過k8s進行集群管理,你可能需要尋求別的方法:

借助jenkins進行參數配置

具體配置方法參考:jmx 遠程監控tomcat


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM