通过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