日志体系
日志是定位问题、追踪请求和合规审计的重要手段。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)格式,便于检索与分析。
- 合理选择采集方式,兼顾实时性与性能。
- 定期清理和归档日志,防止磁盘占用过高。
- 配置敏感字段脱敏,保障数据安全。
日志体系是运维与安全的基础,建议结合业务需求持续优化日志策略。