温馨提示×

Ubuntu Tomcat如何日志分析

小樊
35
2025-12-26 19:34:23
栏目: 智能运维

Ubuntu Tomcat 日志分析实操指南

一 日志文件与存放路径

  • 常见日志文件与作用
    • catalina.out:标准输出与错误日志,覆盖 启动、运行、关闭 全过程,以及应用打印到控制台的日志,是排查启动失败、异常堆栈、类加载与 JVM 问题的首选文件。
    • localhost..log:应用初始化及未处理异常(如 ServletContextListener 报错、部署失败)的主要来源。
    • localhost_access_log..txt:访问日志,记录每一次 HTTP 请求的 时间、来源、方法、路径、状态码、耗时、字节数 等,用于分析流量、错误率与性能。
    • manager..log / host-manager..log:对应管理应用的专用日志,排查管理操作(部署、取消部署、用户权限)问题。
  • 常见目录
    • /var/log/tomcat/opt/tomcat/logs$CATALINA_HOME/logs;若不确定,可在 server.xmlAccessLogValve 中查看 directory/prefix 配置。
  • 快速定位目录与配置
    • 确认目录:ls $CATALINA_HOME/logs 或 grep -R “AccessLogValve” $CATALINA_HOME/conf
    • 实时查看:tail -f $CATALINA_HOME/logs/catalina.out
    • 访问日志定位异常:统计 4xx/5xx 比例与时间分布,例如:
      • awk ‘$9 ~ /^[45]/ {print $4,$9}’ localhost_access_log.* | sort | uniq -c

二 命令行快速分析

  • 实时与检索
    • 实时跟踪:tail -f catalina.out
    • 过滤错误:tail -f catalina.out | grep -i error
    • 多文件同时跟踪:multitail /path/to/tomcat/logs/catalina.out /path/to/tomcat/logs/localhost.*.log
  • 访问日志统计
    • 总请求数:cat localhost_access_log.* | wc -l
    • IP 访问频次:cat localhost_access_log.* | awk ‘{print $1}’ | sort | uniq -c | sort -nr
    • HTTP 状态码分布:cat localhost_access_log.* | awk ‘{print $9}’ | sort | uniq -c | sort -nr
    • 高频访问 URL:cat localhost_access_log.* | awk ‘{print $7}’ | sort | uniq -c | sort -nr | head -1
  • 错误聚集与时段分析
    • 按小时统计 5xx:awk -F: ‘{print $2":"$3}’ localhost_access_log.* | sort | uniq -c | sort -nr | head
    • 导出错误行:grep -i “exception|error” catalina.out > errors.log
  • 提示
    • 访问日志字段顺序与分隔符取决于 AccessLogValvepattern;以上命令以常见的 combined 模式字段位置为例,必要时先用 head 查看前几行确认列号

三 访问日志配置与字段说明

  • 常用字段含义
    • %h 远程主机名或 IP%l 远程逻辑用户名(恒为 -)、%u 已认证远程用户
    • %t 日期时间、%r 请求第一行(方法 + URL + 协议)
    • %s 响应状态码、%b/%B 响应字节数(不含/含 HTTP 头,0 字节时 b 为 “-”)
    • %D/%T 处理耗时(毫秒/秒)、%m 请求方法、%p 本地端口
    • %q 查询串(含 “?”)、%U 请求 URL 路径、%v 本地服务器名
    • %I 当前请求线程名(便于与线程转储/监控对齐)
  • 常用 pattern
    • common:%h %l %u %t “%r” %s %b
    • combined:%h %l %u %t “%r” %s %b “%{Referer}i” “%{User-Agent}i”
  • 重要提示
    • 标准访问日志默认不记录 POST 请求体;如需记录,可通过自定义 Valve/Filter 将参数写入日志(示例 pattern 中增加 [%{postdata}r] 的做法,需自行实现或引入过滤器)

四 安全分析与加固

  • 异常请求识别
    • SQL 注入:参数含 and 1=1、union select、from information_schema 等
    • XSS:参数含