温馨提示×

CentOS Tomcat日志中关键指标有哪些

小樊
44
2025-12-23 13:15:48
栏目: 智能运维

CentOS Tomcat日志关键指标

一 日志类型与定位

  • 访问日志 AccessLog:记录每一次 HTTP 请求的明细,默认位于 $CATALINA_HOME/logs/localhost_access_log.*.txt,由 AccessLogValve 写入,适合统计 PV/UV、响应时间、吞吐量、状态码分布、来源与 UA 等。
  • 运行与错误日志:核心为 catalina.out(标准输出/错误)、localhost..log(本地主机应用日志)、以及可选的 manager..log / host-manager..log,用于发现 异常堆栈、启动失败、部署与运行期错误
  • 日志目录通常为 $CATALINA_HOME/logs(Linux/CentOS 环境)。

二 访问日志关键字段与含义

  • 基础字段
    • %h:远程主机(IP/主机名)
    • %l:远程逻辑用户名(identd,通常为 -
    • %u:已认证远程用户(若无则为 -
    • %t:请求时间(常见格式如 [18/Jul/2018:17:00:01+0800]
    • %r:请求首行(方法 + URL + 协议)
    • %s:HTTP 状态码(如 200/404/500
    • %b:发送给客户端的字节数(不含响应头;为 0 时可能显示为 -
  • 性能与时延
    • %D:处理请求耗时(毫秒
    • %T:处理请求耗时(,毫秒级精度)
    • %F:提交响应耗时(毫秒
  • 连接与协议
    • %p:接收请求的本地端口
    • %H:请求协议(如 HTTP/1.1
  • 请求细节
    • %m:请求方法(GET/POST 等)
    • %U:请求 URL 路径(不含查询串)
    • %q:查询字符串(若有,前缀 ?
    • %I:当前请求线程名(便于与线程转储/堆栈对齐)
  • 请求头/响应头/Cookie
    • %{xxx}i:请求头(如 %{User-Agent}i%{Referer}i%{X-Forwarded-For}i
    • %{xxx}o:响应头
    • %{xxx}c:Cookie
  • 连接状态
    • %X:响应完成时的连接状态(X=响应完成前连接中止;+=响应后可能保持长连接;-=响应后关闭)
  • 常用组合
    • common%h %l %u %t “%r” %s %b
    • combined:在 common 基础上增加 “%{Referer}i” “%{User-Agent}i”
  • 生产建议
    • 在反向代理/负载均衡后,优先记录 %{X-Forwarded-For}i 以获取真实客户端 IP。
    • 为性能分析建议包含 %D/%T/%F、%r、%s、%b、%I

三 错误与运行日志关键信号

  • 日志级别与来源:关注 SEVERE/WARN/ERROR 级别,定位 catalina.outlocalhost..log 中的异常与堆栈。
  • 异常解读要点:
    • 异常类型(如 NullPointerException/IOException
    • 异常消息(直接指向根因)
    • 堆栈跟踪(定位到具体类/方法/行号)
    • 请求上下文(URL、方法、参数、客户端 IP,便于复现)
    • 运行环境信息(Tomcat 版本、JVM 信息等)
  • 常见故障线索:
    • 端口冲突(启动失败,端口被占用)
    • 类/资源未找到(部署或依赖问题)
    • 数据库连接失败(URL/账号/网络/数据库可用性)
  • 排查动作:结合 tail -f 实时观察、grep/awk 过滤关键字、必要时提高日志级别或开启更详细访问日志以还原现场。

四 从日志计算的核心监控指标与示例

  • 吞吐量与并发
    • QPS/RPS:单位时间请求数(如每分钟/每秒计数)
    • 并发连接/请求数:结合访问日志时间与状态码进行窗口统计
  • 时延与性能分布
    • 平均/中位数/分位时延(P95/P99):基于 %D/%T 计算
    • 响应提交耗时:基于 %F 识别慢提交/慢刷盘
  • 成功率与错误率
    • HTTP 错误率:统计 %s >= 400 的占比
    • 异常率:错误日志中 ERROR/SEVERE 占比或计数
  • 流量与负载
    • 出站流量:对 %b 求和(字节/秒或字节/分钟)
    • 热点接口/资源:按 %r(URI) 分组统计次数与总耗时
  • 客户端与链路
    • Top IP/UA/Referer:按 %h / %{User-Agent}i / %{Referer}i 分组
    • 真实来源 IP:使用 %{X-Forwarded-For}i 还原
  • 示例命令(按分钟统计 QPS、P95 与错误率)
    • QPS(每分钟)
      • awk -F’[’ ‘{gsub(/-/,“:”,$2); print $2}’ access_log.*.txt | sort | uniq -c | awk ‘{print $2":"$1}’ | sort
    • P95 时延(毫秒,基于 %D)
      • awk ‘{print $NF}’ access_log..txt | sort -n | awk '{a[NR]=$1} END {print "P95="a[int(NR0.95)]}’
    • 错误率(5xx 占比)
      • awk '$9 ~ /^[5]/ {err++; total++} END {printf “ErrorRate=%.2f%%\n”, err/total100}’ access_log..txt
  • 可视化与告警
    • 建议接入 ELK/Logstash/Elasticsearch/KibanaGrafana Loki 做指标化与可视化,配置阈值告警(如 P95 时延、错误率、QPS 突增)。

五 日志配置与采集建议

  • 访问日志建议 Pattern(示例)
    • 兼顾性能与可观测性:
      • pattern=“%h %l %u %t “%r” %s %b %D %F %{User-Agent}i %{Referer}i %{X-Forwarded-For}i”
  • 运行日志建议
    • 使用 AsyncFileHandler 提升高并发写入性能,设置合理的 maxDays 做日志保留,避免磁盘被占满。
  • 日志轮转与保留
    • 启用按时间切分与过期清理,确保长期可查与合规。
  • 代理/网关前置
    • AccessLogValve 中记录 X-Forwarded-For;在 logging.properties 中合理设置日志级别,避免产生过多调试日志。

0