早期的PIGOSS BSM对Tomcat的监控,采用的是HTTP方式,具体实现方式是监控Tomcat的管理页面。可以监控Tomcat的JVM内存使用情况和连接情况,对于一般客户来说,基本足够。而使用JMX来监控Java中间件,PIGOSS也有很多成功案例,如监控Resin、Weblogic、JBOSS等,所以使用JMX监控Tomcat也是完全可行的。
正好某客户使用了大量的Tomcat做为Web发布中间件,而客户的Tomcat经常因为访问量过大导致响应迟钝甚至down掉,因此HTTP方式监控Tomcat的几个指标已经满足了要求了。那如何使用JMX来监控Tomcat呢?
激活Tomcat的JMX远程配置
通过JMX远程监控Tomcat,首先需要激活Tomcat的JMX远程配置:
- 修改Tomcat相应脚本 bin/setenv.sh(注意脚本中的参数在一行,不要换行)
[root@app_tomcat apache-tomcat-8.5.71]# pwd
/root/apache-tomcat-8.5.71
[root@app_tomcat apache-tomcat-8.5.71]# cat bin/setenv.sh
-CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
2. 配置权限文件,比如我们使用JVM用户:monitorRole; 权限为:readonly
[root@app_tomcat apache-tomcat-8.5.71]# cat conf/jmxremote.access
monitorRole readonly
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister
3. 配置密码文件(JVM用户名:monitorRole ; 密码为:xie )
[root@app_tomcat apache-tomcat-8.5.71]# cat conf/jmxremote.password
monitorRole xie
controlRole xie
4. 修改权限
chmod 600 -R ./conf/jmxremote.*
chmod 755 -R ./bin/*
5. 重启Tomcat即可
6. 检查Tomcat端口是否正常,也可以看./log是否有错
netstat -anlp | grep 8080 #检查Tomcat端口
netstat -anlp | grep 8999 #检查JVM端口
JVM连接测试
找一台安装了JDK的Windows主机,直接执行jconsole就可以远程看到指定Tomcat的很多信息
使用PIGOSS BSM对Tomcat进行监控
经过调研,并结合Jconsole的监控结果,PIGOSS BSM可以对Tomcat进行监控,并采集下面指标
监控效果图
实际监控效果配置简单,监控指标很丰富。客户上线后,表示非常赞赏。