一、基础命令行监控
ps -ef | grep tomcat命令确认Tomcat进程是否运行,输出中的PID(进程ID)可用于后续操作(如终止异常进程)。tail -f /path/to/tomcat/logs/catalina.out命令实时跟踪Tomcat的主日志文件,可及时发现错误、警告或请求处理信息;若需同时监控多个日志(如localhost.log),可使用multitail工具(安装后执行multitail /path/to/tomcat/logs/catalina.out /path/to/tomcat/logs/localhost.*.log)。top(动态显示进程CPU/内存占用)、htop(增强版top,支持鼠标操作)或free -h(查看内存使用情况)命令,快速定位Tomcat进程的资源消耗状况。二、日志分析与优化
/var/log/tomcatX/access_log(X为实例编号),可通过tail -f实时查看请求频率,或用awk命令统计高频请求(如awk '{print $4}' /var/log/tomcatX/access_log | cut -d: -f1 | sort | uniq -c | sort -nr),识别热点路径。catalina.sh中添加-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log),使用GCViewer工具解析日志,分析垃圾回收的频率、持续时间及内存回收效率,判断是否需要调整堆大小(如-Xms、-Xmx)。logrotate工具自动管理日志文件,避免日志过大占用磁盘空间。创建/etc/logrotate.d/tomcat_logrotate.conf文件,内容示例:/path/to/tomcat/logs/*.out { size 50M rotate 7 compress daily missingok }sudo logrotate -f /etc/logrotate.d/tomcat_logrotate.conf测试配置,系统会每日自动轮转超过50M的日志文件并压缩保留7份。三、JMX远程监控
tomcat/bin/catalina.sh文件,在JAVA_OPTS中添加以下参数(替换your_server_ip为服务器IP):JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=your_server_ip -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"jconsole,选择“远程进程”,输入your_server_ip:9090,点击“连接”即可查看内存(堆/非堆)、线程、类加载等指标。sudo apt-get install visualvm安装,添加远程主机后,选择Tomcat实例,可进行线程分析(查看死锁、线程阻塞)、内存分析(堆转储、GC趋势)。四、第三方监控工具
sudo apt-get install zabbix-java-gateway。/etc/zabbix/zabbix_server.conf中启用JavaGateway并设置端口,默认10052)。sudo apt-get install prometheus)和Grafana(sudo apt-get install grafana)。/etc/prometheus/prometheus.yml,添加Tomcat的JMX Exporter地址(需先下载jmx_prometheus_javaagent并配置jmx_exporter.yml)。五、自定义脚本监控 可通过Shell或Python脚本定期检查Tomcat状态,例如:
ps -ef | grep tomcat | grep -v grep(若无输出则进程异常)。curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/manager/html,返回200表示正常)。crontab -e添加*/5 * * * * /path/to/script.sh),每5分钟执行一次,并将结果记录到日志文件。