首页主机资讯centos tomcat日志中如何查看访问来源

centos tomcat日志中如何查看访问来源

时间2025-11-14 12:17:04发布访客分类主机资讯浏览472
导读:查看访问来源的关键要点 在 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。

步骤三 经过代理或负载均衡时获取真实来源

  • 在反向代理/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。

步骤四 常用检索与分析命令

  • 实时查看来源 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
nginx日志格式配置说明 如何优化centos tomcat线程池

游客 回复需填写必要信息