一、基础命令行工具:实时查看与快速过滤
日志监控的核心是实时获取日志动态及快速定位异常,基础命令行工具是最轻量的方式。
tail -f 实时跟踪:通过tail -f /path/to/tomcat/logs/catalina.out命令,可实时查看Tomcat主日志文件的新增内容(如启动信息、请求处理、错误堆栈)。若日志文件轮转(如按大小或时间分割),需改用tail -F(跟踪文件名变化),确保不遗漏新日志。grep 关键字过滤:用grep "ERROR" /path/to/tomcat/logs/catalina.out可快速提取错误日志,结合-i(忽略大小写)、-A 5(显示匹配行后5行)等参数,能更精准地定位问题(如内存溢出、数据库连接失败)。less 交互式查看:less -F /path/to/tomcat/logs/catalina.out支持实时跟踪,同时可通过上下箭头翻阅历史日志,按q退出,适合需要反复查看的场景。二、日志轮转:避免日志文件过大
Tomcat日志(尤其是catalina.out)会随时间增长而膨胀,影响查看效率及磁盘空间。需通过日志轮转定期分割、压缩旧日志。
logrotate 配置:在/etc/logrotate.d/tomcat中添加配置(示例):/path/to/tomcat/logs/*.out {
size 50M # 单个日志文件超过50MB时轮转
rotate 7 # 保留最近7个轮转文件
compress # 压缩旧日志(如catalina.out.1.gz)
daily # 每天检查一次(也可改为size触发)
missingok # 若日志文件不存在也不报错
copytruncate # 复制原日志后清空,避免重启Tomcat
}
执行sudo logrotate -f /etc/logrotate.d/tomcat可手动触发轮转,或通过crontab设置每天定时执行。三、高级日志分析工具:深度监控与可视化
对于大规模或长期运行的Tomcat,需借助专业工具实现日志的集中管理、分析与可视化。
filebeat.yml采集catalina.out、localhost_access_log.*.txt等日志文件;index=tomcat status=500)、报表(如每小时错误数)及告警功能,适合企业级场景。四、日志配置优化:提升监控有效性
合理的日志配置能确保监控的针对性与高效性。
conf/logging.properties文件,修改日志记录器级别(如org.apache.catalina.level=INFO记录常规信息,org.apache.catalina.level=FINE记录详细调试信息),避免过多无用日志影响性能。server.xml中配置AccessLogValve,将访问日志(如请求时间、客户端IP、响应状态码)单独输出到localhost_access_log.YYYY-MM-DD.txt,便于后续分析访问模式(如高峰时段、慢请求)。server.xml中的server响应头(如<Connector server="MyTomcat">改为<Connector server="HiddenServer">),避免泄露Tomcat版本信息,降低安全风险。五、自动化监控与告警:主动发现问题
通过自动化脚本或监控工具,可实现Tomcat状态的主动监控与异常告警。
#!/bin/bash
TOMCAT_PID=$(ps -ef | grep tomcat | grep -v grep | awk '{print $2}')
if [ -z "$TOMCAT_PID" ]; then
echo "Tomcat is not running. Restarting..."
/path/to/tomcat/bin/startup.sh
echo "Tomcat restarted at $(date)" >> /var/log/tomcat_monitor.log
else
echo "Tomcat is running (PID: $TOMCAT_PID)"
fi
将脚本添加到crontab(如*/5 * * * * /path/to/script.sh),每5分钟执行一次。check_log插件监控Tomcat日志中的特定关键字(如"SEVERE"),实现实时告警。