centos tomcat日志中如何查看访问来源
导读:查看访问来源的关键要点 在 Tomcat 中,访问来源通常指客户端的 IP 地址 或经过代理/负载均衡后的 X-Forwarded-For 头中的真实 IP。 直接访问时,访问日志中的 %h 即为客户端 IP;经过 SLB/WAF/CDN...
查看访问来源的关键要点
- 在 Tomcat 中,访问来源通常指客户端的 IP 地址 或经过代理/负载均衡后的 X-Forwarded-For 头中的真实 IP。
- 直接访问时,访问日志中的 %h 即为客户端 IP;经过 SLB/WAF/CDN/反向代理 时,需在日志中输出并(必要时)用 RemoteIpValve 将 %h 替换为真实客户端 IP。
步骤一 确认访问日志位置与实时查看
- 日志目录通常为 $CATALINA_HOME/logs,常见访问日志为 localhost_access_log.YYYY-MM-DD.txt,控制台输出为 catalina.out。进入目录并实时查看示例:
- cd $CATALINA_HOME/logs
- tail -f localhost_access_log.*.txt
- tail -f catalina.out
- 如使用 systemd 管理 Tomcat,也可通过 journalctl 查看服务日志:journalctl -u tomcat.service -f。
步骤二 直接访问时输出访问来源
- 编辑 conf/server.xml,在 内确保存在 AccessLogValve,并使用包含 %h(远程主机/客户端 IP)的格式(如 common 或 combined):
- 示例(combined 格式):
< Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> - 保存后重启 Tomcat,访问日志的 %h 字段即为来源 IP。
- 示例(combined 格式):
步骤三 经过代理或负载均衡时获取真实来源
- 在反向代理/WAF/SLB 前置的场景,建议在日志中输出 X-Forwarded-For 并在 Tomcat 内用 RemoteIpValve 将 %h 替换为真实客户端 IP:
- 在 server.xml 的 中先添加 RemoteIpValve,再配置 AccessLogValve(推荐 combined 或自定义包含 %a/%{
X-Forwarded-For}
i 的格式):
< !-- 将 X-Forwarded-For 中的客户端IP替换到 %h/%a --> < Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" /> < Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%a %{ X-Forwarded-For} i %l %u %t "%r" %s %b %{ User-Agent} i" /> - 说明:
- %a:远程 IP(经 RemoteIpValve 处理后即为真实客户端 IP)。
- %{ X-Forwarded-For} i:原始请求头中的 X-Forwarded-For 值(便于审计链路)。
- 若未使用 RemoteIpValve,仅添加 %{ X-Forwarded-For} i 会记录头内容,但不会替换 %h;直接访问时可能看到 “-” 或代理 IP。
- 保存并重启 Tomcat 后,访问日志将优先显示真实客户端 IP。
- 在 server.xml 的 中先添加 RemoteIpValve,再配置 AccessLogValve(推荐 combined 或自定义包含 %a/%{
X-Forwarded-For}
i 的格式):
步骤四 常用检索与分析命令
- 实时查看来源 IP(按 IP 排序去重):
- tail -f localhost_access_log.*.txt | awk ‘{ print $1} ’ | sort -u
- 统计 Top N 来源 IP:
- tail -n 10000 localhost_access_log.*.txt | awk ‘{ print $1} ’ | sort | uniq -c | sort -nr | head -20
- 过滤指定来源 IP 的访问:
- grep ‘^203.0.113.45’ localhost_access_log.*.txt
- 按时间窗口查看(示例:2025-11-14 10:00–11:00):
- sed -n ‘/2025-11-14 10:/,/2025-11-14 11:/p’ localhost_access_log.*.txt
- 如需长期分析,可将日志接入 ELK Stack(Elasticsearch/Logstash/Kibana) 或 Splunk 做可视化与报表。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos tomcat日志中如何查看访问来源
本文地址: https://pptw.com/jishu/747898.html
