一、什么是 BFE 日志?

BFE 日志是百度开源七层负载均衡器 BFE(Baidu Front End) 产生的全链路可观测数据记录。作为承载百度内部每日近 1万亿请求、峰值 QPS 超 1000万 的核心流量入口,BFE 的日志系统是其"最佳可观测性"能力的关键组成部分。

与四层负载均衡仅记录 IP 和端口不同,BFE 作为七层负载均衡器,工作在 OSI 模型的应用层,能够深度解析 HTTP/HTTPS 协议内容,记录包括 URL、Cookie、Header、状态码、响应时间等丰富的业务级信息。


二、BFE 日志的三大核心类型

BFE 内置完善的日志体系,主要包括以下三类:

1. 访问日志(Access Log)—— 流量全记录

功能:记录所有经过 BFE 的 HTTP/HTTPS 请求详情,是故障排查、安全审计、业务分析的核心数据源

配置模块mod_access

典型记录字段

字段变量含义说明示例值
$time请求时间戳2026-03-18T14:30:00+08:00
$remote_addr客户端 IP 地址192.168.1.100
$server_addrBFE 服务器 IP10.0.0.5
$host请求 Host 头api.example.com
$request完整请求行GET /api/v1/users HTTP/1.1
$status_codeHTTP 状态码200
$body_bytes_sent响应体字节数1024
$request_time请求处理耗时(微秒)15000
$upstream_addr后端服务器地址10.0.1.10:8080
$ssl_protocolTLS 协议版本TLSv1.3

输出方式

  • 单文件输出:直接指定日志文件路径,适合开发测试环境
  • 轮转日志输出:支持按小时/天/周自动轮转,可配置保留策略,适合生产环境

2. 服务日志(Server Log)—— 系统运行态

功能:记录 BFE 服务自身的运行状态、错误信息、配置加载事件、启动/停止记录等。

特点:内置服务日志,无需额外配置,主要用于运维人员监控 BFE 进程健康状态。

3. TLS Key 日志 —— 安全分析利器

功能:记录 TLS 握手过程中的密钥信息,用于 HTTPS 流量解密分析。

配置模块mod_key_log

格式标准:采用 NSS 密钥日志格式,包含标签标识、客户端随机数、主密钥等字段,可直接导入 Wireshark 进行 TLS 流量分析。


三、实战配置:从零搭建 BFE 日志系统

3.1 访问日志基础配置

编辑 conf/mod_access/mod_access.conf

[Modules]
mod_access = on

[Log]
# 日志文件前缀
LogPrefix = access
# 日志存储目录
LogDir = /var/log/bfe
# 轮转策略:HOUR/DAY/MIDNIGHT/WEEK/NEXTHOUR
RotateWhen = DAY
# 保留30个备份文件(即30天)
BackupCount = 30

[Template]
# 请求日志模板(单行格式,便于日志系统解析)
RequestTemplate = "REQUEST_LOG $time clientip: $remote_addr serverip: $server_addr host: $host product: $product status: $status_code bytes: $body_bytes_sent rt: $request_time upstream: $upstream_addr error: $error"

# 会话日志模板(记录 TCP 连接生命周期)
SessionTemplate = "SESSION_LOG $time clientip: $ses_clientip start_time: $ses_start_time end_time: $ses_end_time overhead: $ses_overhead read_total: $ses_read_total write_total: $ses_write_total keepalive_num: $ses_keepalive_num error: $ses_error"

3.2 输出到标准输出(容器化场景)

在 Kubernetes 等容器环境中,建议输出到 stdout,由日志收集器统一处理:

[Log]
LogFile = /dev/stdout

[Template]
RequestTemplate = "REQUEST_LOG $time clientip: $remote_addr serverip: $server_addr host: $host product: $product status: $status_code error: $error"

3.3 TLS Key 日志配置(调试用)

[Modules]
mod_key_log = on

[mod_key_log]
LogFile = /var/log/bfe/key.log
# 注意:生产环境慎用,涉及敏感密钥信息

四、BFE 日志的高级应用场景

4.1 多层安全防护体系

BFE 日志是安全审计的关键一环:

┌─────────────────────────────────────────────────────┐
│  第一层:流量控制(mod_block)                       │
│  └── IP 黑白名单、频率限制                            │
├─────────────────────────────────────────────────────┤
│  第二层:WAF 检测(mod_unified_waf)                  │
│  └── 恶意请求识别、内容过滤                           │
├─────────────────────────────────────────────────────┤
│  第三层:访问审计(mod_access)                       │
│  └── 完整请求记录、溯源取证、异常行为分析              │
└─────────────────────────────────────────────────────┘

通过 mod_access 记录的完整访问日志,安全团队可以:

  • 追踪可疑 IP 的访问路径
  • 分析攻击模式(如 CC 攻击、SQL 注入尝试)
  • 满足合规审计要求

4.2 性能监控与告警

结合 BFE 内置的 Prometheus 指标和访问日志,可构建完善的监控体系:

监控维度指标来源告警阈值建议
请求成功率访问日志状态码统计< 95%
P99 响应时间日志中的 $request_time> 500ms
后端健康率BFE 内置指标 bfe_backend_healthy_instances< 80%
错误率突增日志中 5xx 状态码占比> 1%

配置示例

# Prometheus 告警规则
groups:
  - name: bfe_alerts
    rules:
      - alert: BFEHighErrorRate
        expr: sum(rate(bfe_http_requests_total{status=~"5.."}[5m])) / sum(rate(bfe_http_requests_total[5m])) > 0.01
        for: 2m
        annotations:
          summary: "BFE 错误率超过 1%"

4.3 日志轮转与存储优化

生产环境最佳实践

  1. 异步写入:避免同步日志 IO 阻塞请求处理
  2. 分级存储
    • 热数据(最近 7 天):本地 SSD,用于实时排查
    • 温数据(7-30 天):对象存储,用于趋势分析
    • 冷数据(30 天+):压缩归档,用于合规审计
  3. 字段精简:只记录必要字段,减少存储开销
  4. 日志压缩:对历史日志进行 gzip 压缩,节省 70%+ 存储空间

五、BFE 日志 vs 传统七层负载均衡日志

特性BFE 日志Nginx/HAProxy 日志
日志格式高度可定制的模板化格式固定格式或有限变量
动态配置支持热加载,无需重启通常需要重载配置
多租户隔离天然支持,按产品线分离日志需手动配置分离
云原生集成原生支持 Prometheus、Fluentd、Jaeger需额外 exporter
性能影响异步写入,影响极小同步写入时影响明显
TLS 分析内置密钥日志模块需第三方 patch

六、总结:为什么 BFE 日志值得关注?

BFE 日志不仅是简单的请求记录,更是现代云原生架构的可观测性基石

  1. 全链路追踪:结合 mod_trace 模块,实现分布式链路追踪
  2. 安全合规:满足等保 2.0、GDPR 等审计要求
  3. 业务洞察:通过日志分析用户行为、流量模式
  4. 智能运维:基于日志的异常检测、根因分析

对于正在构建微服务架构、API 网关或多云流量入口的团队,BFE 的日志系统提供了开箱即用且生产级验证的解决方案。作为 CNCF 沙盒项目,BFE 的日志设计理念也代表了云原生时代七层负载均衡的发展方向——不只是转发流量,更要理解流量


参考资源

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐