1. 系统命令监控(基础快速检查)
通过CentOS系统自带命令快速验证Tomcat运行状态及资源占用:
ps -ef | grep tomcat
或 ps -ef | grep java
,确认Tomcat进程是否存在;sudo netstat -tulnp | grep 8080
(默认端口)或 sudo ss -tulnp | grep 8080
,验证Tomcat是否在监听指定端口;curl http://localhost:8080/
,若返回Tomcat默认页面则服务正常;top -p $(pgrep -f tomcat)
或 htop -p $(pgrep -f tomcat)
,查看Tomcat进程的CPU、内存占用情况;tail -f $CATALINA_HOME/logs/catalina.out
,跟踪Tomcat运行日志,快速定位异常。2. JMX(Java标准管理接口,深度监控)
通过JMX获取Tomcat的详细性能指标(如线程池、内存、类加载、JDBC连接池等),需先启用JMX远程访问:
$CATALINA_HOME/bin/catalina.sh
,在文件开头添加以下配置(替换your_server_ip
为Tomcat服务器IP):CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=your_server_ip"
保存后重启Tomcat:sudo systemctl restart tomcat
。jconsole
,选择“远程进程”,输入localhost:9090
,登录后可查看各项指标;jvisualvm
,添加JMX连接(同上),支持更丰富的插件扩展。3. Tomcat Manager应用(Web界面监控)
Tomcat自带的Web管理工具,适合快速查看应用状态、会话数、部署情况等:
$CATALINA_HOME/conf/tomcat-users.xml
,添加具有manager-gui
角色的用户:<role rolename="manager-gui"/> <user username="admin" password="your_password" roles="manager-gui"/>
保存后重启Tomcat。http://your_server_ip:8080/manager/html
,使用上述用户名密码登录,即可查看Tomcat的运行状态、应用列表、会话信息等。4. 第三方监控工具(企业级解决方案)
通过专业工具实现长期监控、报警及可视化,适合生产环境:
catalina.sh
添加启动参数:CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/jmx_prometheus_javaagent-0.16.1.jar=9091:/path/to/config.yaml"
配置Prometheus(/etc/prometheus/prometheus.yml
)添加Tomcat job:scrape_configs: - job_name: 'tomcat' static_configs: - targets: ['localhost:9091']
启动Prometheus后,配置Grafana数据源(Prometheus),导入Tomcat监控仪表盘(如Grafana官方Tomcat仪表盘),实现可视化监控。5. 日志与脚本监控(自动化与定制化)
catalina.out
、access_log
),存储到Elasticsearch,使用Kibana进行可视化分析(如访问量、错误日志统计),快速定位性能瓶颈或异常;#!/bin/bash TOMCAT_PID=$(pgrep -f tomcat) if [ -z "$TOMCAT_PID" ]; then echo "$(date): Tomcat is down!" >> /var/log/tomcat_monitor.log # 发送报警(示例:邮件) echo "Tomcat is down!" | mail -s "Tomcat Alert" admin@example.com else echo "$(date): Tomcat is running (PID: $TOMCAT_PID)" >> /var/log/tomcat_monitor.log fi
赋予执行权限:chmod +x monitor.sh
,添加到cron定时任务(每分钟执行一次):* * * * * /path/to/monitor.sh
。