前言

java应用部署下在生产环境,肯定是少不了监控的,比如说我们想要监控JVM的线程使用情况,内存使用情况等等。这时候我们可以采用JMX来实现JVM监控,如果对JMX不熟悉,可以参见之前的

精通JVM监控,不知道JMX?

springboot服务启动JMX监控

当前java服务一般都是使用springboot框架来快速搭建的,我们要在服务中启动JMX监控改如何配置呢?其实服务内部不需要加任何配置或修改,在服务的启动脚本中增加JMX配置即可,下面看一个demo。

nohup /usr/bin/java -Xms2048m -Xmx2048m -Xss256k 
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m 
-XX:+PrintHeapAtGC -XX:+PrintGCDateStamps 
-Xloggc:$PRGDIR/log/gclogs.log 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=17099  
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=17098  
-jar test.jar --spring.profiles.active=devInteg >$PRGDIR/log/start.log 2>&1 &

上面demo中以Dcom开头的配置就是JMX相关的配置,由于这个demo之前在本地做性能测试配置的,所以不需要考虑安全性,就是未开启认证和SSL了。如果要考虑安全可以参考下面配置

java 
-Djava.rmi.server.hostname=192.168.3.14 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=17099 
-Dcom.sun.management.jmxremote.authenticate=true 
-Dcom.sun.management.jmxremote.password.file=/etc/java-6-openjdk/management/jmxremote.password 
-Dcom.sun.management.jmxremote.access.file=/etc/java-6-openjdk/management/jmxremote.access 
-Dcom.sun.management.jmxremote.ssl=true 
-Djavax.net.ssl.keyStore=$YOUR_KEY_STORE 
-Djavax.net.ssl.keyStorePassword=$YOUR_KEY_STORE_PASSWORD 
-Djavax.net.ssl.trustStore=$YOUR_TRUST_STORE 
-Djavax.net.ssl.trustStorePassword=$YOUR_TRUST_STORE_PASSWORD 
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true 
-jar /usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar

上面配置是在服务的启动脚本配置的,我们也可以在JDK的安装目录JRE_HOME/lib/management/management.properties中统一配置。

VisualVM连接JMX

直接在本地jdk的bin目录中的,启动VisualVM

 启动之后,添加远程ip,选择添加JMX连接

 连接成功之后

 从上图可以看到CPU,内存的使用情况。VisualVM只是其中一种连接客户端,还可以通过Spring Boot Actuator、JConsole来连接。

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐