springboot服务启动JMX监控
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
前言
java应用部署下在生产环境肯定是少不了监控的比如说我们想要监控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来连接。