运维工程师免费技术教程之tomcat动态日志监控

在负载均衡(如 LVS/Nginx 转发)模式下查看两台 Tomcat 的动态日志,核心是「实时跟踪每台 Tomcat 的日志文件」,并可通过「日志关键词过滤」「多终端聚合」等方式定位请求走向。以下是分场景的实操方案,覆盖基础实时查看、聚合分析、精准定位请求等需求:

一、基础方案:单台 Tomcat 动态日志查看(最常用)

Tomcat 的核心日志分为 访问日志 (记录所有 HTTP 请求)和 应用日志(如业务报错、Tomcat 运行日志),分别对应不同文件,需针对性跟踪:

1. 实时跟踪 Tomcat 访问日志(判断请求是否转发到该节点)

访问日志默认路径:TOMCAT_HOME/logs/localhost_access_log.*.txt(或自定义命名,如你之前配置的 blog_access_log.txt)。

bash 复制代码
# 登录 Tomcat 节点(如 tomcat01),实时跟踪访问日志(动态刷新)
tail -f /usr/local/tomcat/logs/localhost_access_log.2025-12-08.txt

# 若你自定义了访问日志名称(如 blog_access_log.txt),则:
tail -f /usr/local/tomcat/logs/blog_access_log.txt
  • 关键作用 :只要负载均衡将请求转发到该 Tomcat,日志会立即显示请求的 Host 头、请求路径、状态码等,可直接判断「该节点是否收到请求」。

  • 过滤关键请求 (如只看某域名/路径):

    bash 复制代码
    # 只显示包含 www.cloudcpblog.com 的请求
    tail -f /usr/local/tomcat/logs/blog_access_log.txt | grep "www.cloudcpblog.com"
    # 只显示 500 错误的请求(定位服务异常)
    tail -f /usr/local/tomcat/logs/blog_access_log.txt | grep " 500 "
2. 实时跟踪 Tomcat 应用/运行日志(定位报错)

应用日志默认路径:TOMCAT_HOME/logs/catalina.out(包含 Tomcat 启动日志、应用代码报错、JVM 信息等)。

bash 复制代码
# 实时跟踪 catalina.out,动态查看报错/运行信息
tail -f /usr/local/tomcat/logs/catalina.out

# 过滤报错关键词(如 Exception/Error)
tail -f /usr/local/tomcat/logs/catalina.out | grep -i "exception\|error"
  • 关键作用:若请求到达 Tomcat 但业务报错(如数据库连接失败、代码异常),可在此日志中找到具体堆栈信息。

二、进阶方案:同时查看两台 Tomcat 的动态日志(聚合分析)

负载均衡模式下,需同时观察两台 Tomcat 的日志,判断「请求是否按负载规则分发」(如轮询、权重),有 3 种常用方式:

方式 1:多终端分屏(最简单)
  • 打开 2 个 SSH 终端,分别登录 tomcat01 和 tomcat02;
  • 各自执行 tail -f 跟踪访问日志,同时操作客户端访问域名,观察两台日志的请求记录(如轮询模式下会交替出现请求)。
方式 2:使用 multitail 工具(单终端聚合多日志)

multitail 可在单个终端同时显示多个远程/本地日志,适合无多终端的场景:

bash 复制代码
# 1. 安装 multitail(CentOS/Rocky Linux)
yum install -y multitail

# 2. 同时跟踪两台 Tomcat 的访问日志(需先配置 SSH 免密登录,避免重复输密码)
multitail \
  -l "ssh root@tomcat01 'tail -f /usr/local/tomcat/logs/blog_access_log.txt'" \
  -l "ssh root@tomcat02 'tail -f /usr/local/tomcat/logs/blog_access_log.txt'"
  • 操作快捷键 :
    • 按 j/k 切换日志窗口;
    • 按 Ctrl+C 退出;
    • 按 F 可过滤关键词(如输入 www.cloudcpblog.com 只看目标请求)。
方式 3:日志集中收集(ELK,适合生产环境)

若为生产环境,推荐搭建 ELK 栈(Elasticsearch + Logstash + Kibana):

  1. 在两台 Tomcat 上部署 Filebeat,实时采集访问日志/应用日志;
  2. Filebeat 将日志发送到 Logstash 清洗、打标签(如标记 tomcat01/tomcat02);
  3. Elasticsearch 存储日志,Kibana 提供可视化面板,可:
    • 实时搜索所有日志(按节点、时间、请求路径过滤);
    • 统计两台 Tomcat 的请求量(验证负载均衡权重是否生效);
    • 定位某条请求具体落在哪个 Tomcat 节点。

三、精准方案:定位「单个请求」落在哪个 Tomcat 节点

若需追踪「某一次客户端请求」具体转发到了哪台 Tomcat,可通过「请求唯一标识」实现:

  1. 客户端请求时添加自定义头/参数 (如 trace-id):

    bash 复制代码
    # 用 curl 发送请求,添加自定义 trace-id=123456
    curl -H "trace-id: 123456" http://www.cloudcpblog.com
  2. 修改 Tomcat 访问日志格式,记录自定义头 :
    编辑 Tomcat 的 conf/server.xml,在 <AccessLogValve> 的 pattern 中添加 %{trace-id}i(记录 trace-id 头):

    xml 复制代码
    <Valve className="org.apache.catalina.valves.AccessLogValve" 
           directory="logs" prefix="blog_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; &quot;%{trace-id}i&quot;" />
  3. 重启 Tomcat 后,在两台日志中搜索 trace-id=123456 :

    bash 复制代码
    # 在 tomcat01 搜索
    grep "123456" /usr/local/tomcat/logs/blog_access_log.txt
    # 在 tomcat02 搜索
    grep "123456" /usr/local/tomcat/logs/blog_access_log.txt
    • 哪个节点的日志能搜到,说明请求转发到了该节点。

四、关键注意事项

  1. 日志时间同步 :确保两台 Tomcat 节点的系统时间同步(执行 ntpdate ntp.aliyun.com),否则日志时间不一致会导致分析混乱;
  2. 负载均衡转发规则 :若使用 Nginx 负载均衡,需确保配置中开启 proxy_set_header Host $host;(传递域名),否则 Tomcat 访问日志的 Host 头会显示 IP,无法匹配虚拟主机;
  3. 日志轮转 :若 Tomcat 开启了日志轮转(如按天生成日志文件),需确认跟踪的是当天的日志文件(如 localhost_access_log.2025-12-08.txt),而非历史文件。

总结

场景 推荐方案
快速验证单节点是否收到请求 tail -f 跟踪访问日志
同时观察两台节点的请求分发 multitail 聚合日志 / 多终端分屏
生产环境长期监控/分析 ELK 日志集中收集
定位单个请求的转发节点 自定义 trace-id + 日志过滤

按以上方法,可清晰掌握负载均衡模式下两台 Tomcat 的请求接收、运行状态,快速定位「请求未转发」「节点报错」「负载规则未生效」等问题。

相关推荐
Initialize-le1 小时前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
Android系统攻城狮3 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根4 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
U-Mail邮件系统5 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
天远数科6 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化
别动我齐刘海7 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
honsor7 小时前
机房IP化改造首选:以太网温湿度传感器,PoE供电+Modbus TCP一网搞定
linux·运维·服务器
星创易联8 小时前
PLC数据采集与远程运维平台:从边缘计算到集中监控
大数据·运维·边缘计算
寻道模式9 小时前
【运维心得】完整教程:绕过Win11限制让老机焕发新生
运维·操作系统·win11
zzu123zsw9 小时前
从 proxy_pass 末尾斜杠到 WebAssembly 预压缩:深挖 Nginx 生产环境四大高频踩坑点
运维·nginx·wasm·webassembly·devops·运维排错