温馨提示×

Ubuntu Tomcat日志中哪些指标重要

小樊
36
2025-12-23 20:09:39
栏目: 智能运维

Ubuntu Tomcat日志关键指标与优先级

一 日志类型与用途概览

  • catalina.out / catalina.[日期].log:记录启动/关闭JVM 参数标准输出/错误未捕获异常,用于判断实例生命周期与致命错误。
  • localhost.[日期].log:应用层面的日志输出(如 log4j、jul 等),便于定位业务异常与错误堆栈。
  • localhost_access_log.[日期].txt访问日志,承载PV/UV状态码分布响应时间流量来源信息,是性能与可用性观测的核心。
  • 其他:host-manager.[日期].log / manager.[日期].log(管理应用)、commons-daemon.[日期].log(服务守护进程)、以及按配置的stdout/stderr重定向文件。以上文件通常位于 $CATALINA_HOME/logs(常见为 /var/log/tomcat/opt/tomcat/logs)。

二 访问日志的关键指标与字段

  • 基础维度
    • 时间 %t:请求发生时间(含时区),用于峰值与时段分析。
    • 客户端 IP %h / %a:来源地址;在反向代理/负载均衡后,建议记录 X-Real-IPX-Forwarded-For 以获取真实客户端 IP(如:%{X-Real-IP}i)。
    • 请求行 %r:包含方法 + URI + 协议,便于识别异常接口与攻击特征。
    • 状态码 %>s:如 200/4xx/5xx,用于可用性与健康度评估。
    • 响应体大小 %b / %B:用于吞吐量流量统计(%b 为 CLF 格式,0 记录为“-”;%B 恒为数字)。
  • 性能与诊断
    • 处理时间 %D(毫秒)/ %T(秒):定位慢请求与性能瓶颈。
    • 线程名 %I:关联线程池与并发压力。
    • 会话 ID %S:追踪用户会话相关问题。
    • 请求协议 %H、本地端口 %p、查询串 %q、URI 路径 %U:细化到协议/端口/接口/参数维度的分析。
  • 建议的增强字段
    • %{User-Agent}i、%{Referer}i:识别爬虫/浏览器来源页面
    • %{Cookie}i / %{JSESSIONID}c:会话与登录态分析。
    • 在反向代理后务必记录 X-Real-IP / X-Forwarded-For,否则 %h 可能只是代理 IP。

三 异常与运行日志的关键信号

  • 关键词与级别:优先关注 ERROR / SEVERE / WARNING,并阅读异常堆栈定位到类/方法/行号
  • 常见致命信号
    • 端口冲突:如 “Address already in use”,需检查端口占用与进程。
    • 配置错误:如 “Error parsing configuration class”,核对 server.xml / web.xml 等。
    • 依赖缺失:如 NoClassDefFoundError,检查 WEB-INF/lib 与依赖版本。
    • 内存不足:启动失败或频繁 Full GC,需调整 -Xms / -Xmx
    • 编码问题:中文乱码,设置 -Dfile.encoding=UTF-8
  • 解读流程:先看异常类型与描述 → 顺着堆栈跟踪定位代码 → 结合**请求上下文(URL/参数/IP)**复现与修复。

四 快速定位与统计的常用命令

  • 实时查看与检索
    • 实时看控制台输出:tail -f /var/log/tomcat/catalina.out
    • 检索关键字:grep -i "OutOfMemoryError" /var/log/tomcat/catalina.out
  • 访问日志常用统计(示例)
    • PVcat localhost_access_log.* | wc -l
    • UV(按 IP)cat localhost_access_log.* | awk '{ips[$1]++} END {for(i in ips) print i,ips[i]}'
    • 状态码分布cat localhost_access_log.* | awk '{status[$9]++} END {for(s in status) print s,status[s]}'
    • Top URLcat localhost_access_log.* | awk '{urls[$7]++} END {for(u in urls) print u,urls[u]}' | sort -nrk2 | head
  • 建议将访问日志接入 ELK/GraylogPrometheus+Grafana,实现可视化与告警

五 推荐的访问日志配置示例

  • 兼顾真实来源 IP响应时间UA/Referer会话,便于排障与运营分析:
<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log."
       suffix=".txt"
       pattern="%h %l %u [%{yyyy-MM-dd HH:mm:ss}t] \"%r\" %>s %b %D %{User-Agent}i %{Referer}i %{JSESSIONID}c %{X-Real-IP}i" />
  • 若处于反向代理后,务必记录 X-Real-IP / X-Forwarded-For;如需更细粒度,可补充 %{Cookie}i、%{xxx}r、%{xxx}s 等字段。

0