通过Tomcat日志监控Ubuntu应用状态的方法
Tomcat的日志文件集中存储在Ubuntu系统的/var/log/tomcat(默认安装路径)或/opt/tomcat/logs(自定义路径)目录下,主要包含以下类型:
conf/server.xml中的AccessLogValve标签)确认访问日志的具体路径。使用tail命令的-f参数实时跟踪日志文件的新增内容,是监控应用状态的常用方式:
tail -f /var/log/tomcat/catalina.out
catalina.out和localhost.log),可使用multitail工具(安装:sudo apt install multitail):multitail /var/log/tomcat/catalina.out /var/log/tomcat/localhost.log
catalina.out被压缩为catalina.out.1.gz),可使用tail -F(跟踪文件名变化):tail -F /var/log/tomcat/catalina.out
通过实时日志,可快速发现应用崩溃、请求超时、数据库连接池耗尽等问题。
使用grep、awk等命令过滤日志中的关键信息,缩小问题范围:
grep -i "error\|exception" /var/log/tomcat/catalina.out
grep "$(date '+%Y-%m-%d')" /var/log/tomcat/catalina.out | grep -i "error" | wc -l
grep " 5[0-9][0-9] " /var/log/tomcat/localhost_access_log.2025-10-22.txt
通过过滤,可快速识别应用的常见故障(如空指针异常、SQL语法错误、HTTP请求处理失败)。
当日志文件过大时,需通过logrotate工具进行轮转(压缩旧日志、删除过期日志),防止占用过多磁盘空间:
sudo apt install logrotate
/etc/logrotate.d/tomcat):/var/log/tomcat/*.log {
daily # 每天轮转
rotate 7 # 保留最近7份
compress # 压缩旧日志(如.gz格式)
missingok # 若日志不存在也不报错
notifempty # 若日志为空则不轮转
create 644 root root # 创建新日志文件的权限
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
systemctl restart tomcat >/dev/null 2>&1 || true
endscript
}
sudo logrotate -f /etc/logrotate.d/tomcat
日志轮转可确保日志文件的可管理性,避免因日志过大导致磁盘空间耗尽。
对于大规模或长期运行的应用,可使用专业工具进行深度分析与可视化:
file input插件),解析日志格式(如grok解析localhost_access_log的时间戳);日志监控需与进程、服务状态监控结合,全面保障应用运行:
ps -ef | grep tomcat
若无Tomcat进程,需通过systemctl start tomcat启动服务。netstat -tuln | grep 8080
若无输出,说明Tomcat未正常监听端口,可能存在端口冲突或服务未启动。#!/bin/bash
if ! ps -ef | grep tomcat | grep -v grep; then
echo "$(date): Tomcat is not running. Restarting..." >> /var/log/tomcat_monitor.log
systemctl restart tomcat
fi
将脚本添加到crontab(crontab -e),每分钟执行一次:* * * * * /path/to/tomcat_monitor.sh
通过进程与服务监控,可及时恢复因意外崩溃的应用,减少 downtime。