Envoy Gateway 实战:配置文本格式访问日志
理解访问日志的重要性
在现代微服务架构中,访问日志是系统可观测性的重要组成部分。Envoy Gateway 作为 Kubernetes 中的 API 网关解决方案,提供了灵活的访问日志配置能力,帮助开发者监控和分析流量模式、排查问题以及进行安全审计。
访问日志配置解析
下面我们深入分析一个典型的 Envoy Gateway 访问日志配置示例,该配置实现了文本格式的访问日志输出。
1. GatewayClass 配置
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: eg
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
parametersRef:
group: gateway.envoyproxy.io
kind: EnvoyProxy
name: text-access-logging
namespace: envoy-gateway-system
这部分定义了 GatewayClass 资源,它是 Kubernetes 网关 API 的核心组件之一。关键点包括:
controllerName
指定了由 Envoy Gateway 控制器管理这个 GatewayClassparametersRef
引用了名为text-access-logging
的 EnvoyProxy 自定义资源,用于提供额外的配置参数
2. EnvoyProxy 自定义资源配置
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: text-access-logging
namespace: envoy-gateway-system
spec:
telemetry:
accessLog:
settings:
- format:
type: Text
text: |
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"
sinks:
- type: File
file:
path: /dev/stdout
这部分是访问日志的核心配置,我们分解来看:
日志格式配置
type: Text
指定使用文本格式的日志text
字段定义了日志的具体格式,使用了 Envoy 的访问日志变量:%START_TIME%
: 请求开始时间%REQ(:METHOD)%
: HTTP 方法%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%
: 原始路径或回退到普通路径%PROTOCOL%
: 协议类型%RESPONSE_CODE%
: HTTP 响应码%RESPONSE_FLAGS%
: Envoy 特定的响应标志%BYTES_RECEIVED%
和%BYTES_SENT%
: 传输的字节数%DURATION%
: 请求持续时间- 其他字段包括客户端 IP、用户代理、请求 ID、主机头和上游主机信息
日志输出配置
sinks
定义了日志的输出方式type: File
表示输出到文件path: /dev/stdout
指定输出到标准输出,这是容器化应用的常见做法
实际应用场景
这种文本格式的访问日志配置适用于以下场景:
- 开发环境调试:简单直观的文本格式便于开发人员快速查看和分析
- 与现有日志系统集成:许多传统日志收集工具对文本格式支持良好
- 快速问题排查:标准化的格式便于使用 grep 等工具进行过滤和分析
高级配置建议
对于生产环境,可以考虑以下增强配置:
- 日志轮转:配置日志文件大小限制和轮转策略
- JSON 格式:考虑使用 JSON 格式便于结构化日志分析
- 采样率:高流量环境下可配置采样率减少日志量
- 敏感信息过滤:确保日志中不记录敏感数据如认证令牌
总结
通过本文的配置示例,我们了解了如何在 Envoy Gateway 中配置文本格式的访问日志。这种配置提供了基本的请求监控能力,是构建可观测性系统的基础。根据实际需求,开发者可以在此基础上进行扩展和定制,以满足不同场景下的日志收集和分析需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考