日志体系

日志是定位问题、追踪请求和合规审计的重要手段。Envoy 支持多种日志类型和灵活的日志格式,便于与主流日志系统集成。

日志类型

  • 访问日志(Access Log):记录每个请求的详细信息,是最常用的日志类型。
  • 管理日志(Admin Log):Envoy 管理接口输出的运行日志,包含启动、配置变更、异常等信息。
  • 审计日志(Audit Log):部分扩展支持,记录安全相关操作。

访问日志配置与格式化

Envoy 支持多种访问日志格式:纯文本、JSON、自定义模板。

配置示例(文本格式)

access_log:
  - name: envoy.access_loggers.file
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
      path: /var/log/envoy/access.log
      log_format:
        text_format: "[%START_TIME%] %DOWNSTREAM_REMOTE_ADDRESS% %REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%ms\n"

配置示例(JSON 格式)

access_log:
  - name: envoy.access_loggers.file
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
      path: /var/log/envoy/access.json
      log_format:
        json_format:
          start_time: "%START_TIME%"
          method: "%REQ(:METHOD)%"
          path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
          response_code: "%RESPONSE_CODE%"
          duration: "%DURATION%"
          upstream_host: "%UPSTREAM_HOST%"

常用字段

  • %START_TIME%:请求开始时间
  • %REQ(:METHOD)%:HTTP 方法
  • %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%:请求路径
  • %RESPONSE_CODE%:响应码
  • %DURATION%:请求耗时(毫秒)
  • %UPSTREAM_HOST%:上游主机
  • %BYTES_RECEIVED%/%BYTES_SENT%:收发字节数

日志采集与集成

Envoy 日志可通过文件、gRPC、HTTP 等多种方式输出,便于对接 ELK、Fluentd、Loki 等日志平台。

  • ELK/Fluentd:通过文件或标准输出采集,统一入库分析。
  • Loki:支持直接推送到 Loki,便于云原生场景下日志聚合。
  • gRPC/HTTP:可扩展为远程日志服务。

工程实践建议

  • 访问日志建议采用结构化(JSON)格式,便于检索与分析。
  • 合理选择采集方式,兼顾实时性与性能。
  • 定期清理和归档日志,防止磁盘占用过高。
  • 配置敏感字段脱敏,保障数据安全。

日志体系是运维与安全的基础,建议结合业务需求持续优化日志策略。

文章导航

章节内容

这是章节的内容页面。

章节概览