- 首页 >
- 问答 >
-
智能运维 >
- Ubuntu Tomcat日志如何进行日志分析
Ubuntu Tomcat日志如何进行日志分析
小樊
40
2025-12-06 01:49:29
Ubuntu 下 Tomcat 日志分析实操指南
一 日志位置与文件类型
- 常见日志目录:/var/log/tomcat、/opt/tomcat/logs、或 $CATALINA_HOME/logs。若不确定,可在 server.xml 的 AccessLogValve 中查看 directory 与 prefix 属性确认访问日志路径与文件名前缀。
- 核心日志与作用:
- catalina.out:标准输出与错误输出(应用与容器的控制台日志)。
- catalina.[YYYY-MM-DD].log:按日期的容器日志。
- localhost.[YYYY-MM-DD].log:应用初始化未处理异常。
- localhost_access_log.[YYYY-MM-DD].txt:访问日志(含客户端 IP、时间、方法、URL、状态码等)。
- manager.[YYYY-MM-DD].log / host-manager.[YYYY-MM-DD].log:管理应用日志。
- 快速定位示例:
- 查看目录:ls -l /var/log/tomcat*
- 确认访问日志配置:grep -n ‘AccessLogValve’ $CATALINA_HOME/conf/server.xml
二 命令行快速分析
- 实时监控与检索:
- 实时查看:tail -f $CATALINA_HOME/logs/catalina.out
- 关键字检索:grep -n ‘ERROR|Exception’ $CATALINA_HOME/logs/catalina.out
- 统计错误数:awk ‘/ERROR/ {count++} END {print “ERROR count:”, count}’ $CATALINA_HOME/logs/catalina.out
- 访问日志分析(按状态码与 Top URL):
- 统计 5xx:awk ‘$9 >= 500 {print $0}’ $CATALINA_HOME/logs/localhost_access_log.*.txt | wc -l
- Top 10 URL:awk ‘{print $7}’ $CATALINA_HOME/logs/localhost_access_log.*.txt | sort | uniq -c | sort -nr | head
- 时间窗口筛选(按常见 ISO8601 时间格式,示例 2025-03-15 14:00 至 15:00):
- sed -n ‘/2025-03-15 1[4-5]:[0-5][0-9]/p’ $CATALINA_HOME/logs/catalina.out
- 日志轮转与归档:
- 使用 logrotate 管理历史日志,避免单文件过大。
- 使用 cronolog 按日期分割 catalina.out(需安装并在启动脚本中配置)。
三 可视化与集中化分析
- ELK Stack(Elasticsearch + Logstash + Kibana):集中采集、解析、存储与可视化;Kibana 可构建错误趋势、状态码分布、Top URL 等面板。
- Graylog:集中式日志平台,支持多种输入与强大检索,适合团队协作与告警。
- Splunk:商业平台,实时搜索、报表与告警能力强。
- Zabbix:结合脚本/索引统计设置监控项与触发器,实现日志异常告警联动。
四 异常检测与告警实践
- 命令行阈值告警(示例:当 5xx 超过阈值时打印提示):
- count=$(awk ‘$9 >= 500 {print $0}’ $CATALINA_HOME/logs/localhost_access_log.*.txt | wc -l); if [ “$count” -gt 100 ]; then echo “High 5xx: $count”; fi
- 脚本化巡检与邮件告警(Python 示例,定时任务每小时执行):
- 0 * * * * /usr/bin/python3 /opt/scripts/tomcat_error_check.py
- 平台化告警:在 Kibana/Elasticsearch 或 Graylog 中配置基于查询的告警规则(如 5xx 突增、ERROR 关键字频度上升)。
- 关联资源监控:结合 top/htop/vmstat/iostat 判断是否为资源瓶颈引发的异常。
五 日志配置与排错要点
- 日志级别与输出:在 conf/logging.properties 调整日志级别(如将 org.apache.catalina 设为 FINE 获取更详细输出);必要时通过 JVM 参数 调整控制台与文件日志级别。
- 访问日志格式:在 server.xml 的 AccessLogValve 中自定义 pattern,便于后续解析与统计(如包含响应时间、User-Agent 等)。
- 编码与乱码:在 logging.properties 设置 java.util.logging.ConsoleHandler.encoding=UTF-8。
- 常见排错路径:
- 进程与端口:ps -ef | grep tomcat;ss -lntp | grep 8080(或 lsof -i :8080)
- 资源与配置:检查 CPU/内存/磁盘 使用;复核 server.xml/web.xml 关键配置;必要时调整 JVM 内存(如 -Xms/-Xmx)。