LVS 不生成 HTTP 访问日志,因其工作在传输层(L4),无法解析 URL、状态码等应用层信息;统计需依托 Real Server 日志、Director 抓包或引入七层代理实现。

LVS 本身不直接生成 HTTP 访问日志(如 Nginx 或 ELB 那样的完整请求日志),因为它工作在传输层(L4),不解析应用层(L7)内容。所以LVS 默认不记录 URL、User-Agent、状态码等 HTTP 维度信息。但你可以通过不同方式实现访问统计,关键看你要统计什么、精度要求多高、以及架构中是否包含七层组件。
LVS 环境下统计访问的常见方式
✅ 方式一:在 Real Server(后端服务器)上记录日志
这是最常用、最准确的方式。
LVS 只做流量转发,真实请求最终到达 Web 服务器(如 Nginx/Apache/Tomcat),这些服务天然支持详细访问日志。
-
操作建议:
- 确保 Real Server 的 Web 服务已开启 access_log(例如 Nginx 的
log_format+access_log指令)。 - 日志中可记录:客户端真实 IP(需 LVS 配合透传)、URI、状态码、响应时间、User-Agent 等。
- 若使用 NAT 或 DR 模式,注意获取真实客户端 IP:
-
NAT 模式:Real Server 默认看到的是 Director 的内网 IP → 需依赖
X-Forwarded-For(但 LVS 不自动加该头,需前端有代理如 Nginx 才能加)。 -
DR/TUN 模式:Real Server 直接收到客户端原始 IP(三层可达时),
$remote_addr即为真实 IP。
-
NAT 模式:Real Server 默认看到的是 Director 的内网 IP → 需依赖
- 确保 Real Server 的 Web 服务已开启 access_log(例如 Nginx 的
-
补充技巧:
- 在 Real Server 上用
awk/goaccess/ELK做日志分析。 - 配合
rsyslog或filebeat将日志统一收集到日志平台。
- 在 Real Server 上用
✅ 方式二:在 Director(LVS 调度器)上抓包统计(粗粒度)
适用于需要监控“连接数”“请求频次”“来源 IP 分布”等网络层指标,不关心具体内容。
-
可用工具:
-
ipvsadm -lnc:查看当前连接数(含客户端 IP、目标 Real Server、状态)。 -
tcpdump抓包 +tshark过滤分析(例如统计每秒请求数、Top 源 IP):tcpdump -i eth0 port 80 -n -c 1000 | tshark -r - -q -z conv,ip
-
netstat/ss结合awk统计 ESTABLISHED 连接来源:ss -tn state established '( dport = :80 )' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
-
注意:这类方式无法区分 GET/POST、无法知道 URI 或状态码,仅适合运维健康检查或突发流量溯源。
✅ 方式三:引入七层代理(推荐用于完整日志需求)
如果业务需要类似 ELB 的标准访问日志(含 $request_uri、$status、$upstream_response_time 等),应在 LVS 后再加一层 L7 代理,比如:
Nginx(作为反向代理)部署在 Real Server 前(或与 LVS 同机),由它接收 LVS 转发的流量并记录完整日志;
或采用云厂商提供的 ALB/CLB(如华为 ELB、阿里 SLB),它们内置 HTTP 日志能力,并支持对接日志服务(CLS/LOG)和仪表盘。
-
优势:
- 日志字段丰富,可直接用于安全审计、性能分析、PV/UV 统计;
- 支持按域名、路径、状态码等多维过滤与聚合;
- 可对接 Grafana、Kibana 实现可视化。
⚠️ 补充说明:LVS 自身无日志功能,也不支持配置“访问日志开关”
不同于 ELB 或 ALB,LVS 是内核模块(IPVS),不提供日志输出接口。你不会在 /var/log/ 下找到 lvs_access.log;它的运行状态只能通过 ipvsadm 命令或 /proc/net/ip_vs* 查看。
不复杂但容易忽略:真正决定你能统计什么的,不是 LVS,而是你在哪一层做日志采集。想要 HTTP 级别细节,就落在 Real Server 或前置代理上;只看连接行为,Director 抓包就够了。

















