温馨提示×

Ubuntu Tomcat日志如何进行日志分析

小樊
40
2025-12-06 01:49:29
栏目: 智能运维

Ubuntu 下 Tomcat 日志分析实操指南

一 日志位置与文件类型

  • 常见日志目录:/var/log/tomcat/opt/tomcat/logs、或 $CATALINA_HOME/logs。若不确定,可在 server.xmlAccessLogValve 中查看 directoryprefix 属性确认访问日志路径与文件名前缀。
  • 核心日志与作用:
    • 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/ElasticsearchGraylog 中配置基于查询的告警规则(如 5xx 突增、ERROR 关键字频度上升)。
  • 关联资源监控:结合 top/htop/vmstat/iostat 判断是否为资源瓶颈引发的异常。

五 日志配置与排错要点

  • 日志级别与输出:在 conf/logging.properties 调整日志级别(如将 org.apache.catalina 设为 FINE 获取更详细输出);必要时通过 JVM 参数 调整控制台与文件日志级别。
  • 访问日志格式:在 server.xmlAccessLogValve 中自定义 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)。

0