Envoy Gateway 实战:配置文本格式访问日志

Envoy Gateway 实战:配置文本格式访问日志

gateway Manages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway gateway 项目地址: https://gitcode.com/gh_mirrors/gate/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 控制器管理这个 GatewayClass
  • parametersRef 引用了名为 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 指定输出到标准输出,这是容器化应用的常见做法

实际应用场景

这种文本格式的访问日志配置适用于以下场景:

  1. 开发环境调试:简单直观的文本格式便于开发人员快速查看和分析
  2. 与现有日志系统集成:许多传统日志收集工具对文本格式支持良好
  3. 快速问题排查:标准化的格式便于使用 grep 等工具进行过滤和分析

高级配置建议

对于生产环境,可以考虑以下增强配置:

  1. 日志轮转:配置日志文件大小限制和轮转策略
  2. JSON 格式:考虑使用 JSON 格式便于结构化日志分析
  3. 采样率:高流量环境下可配置采样率减少日志量
  4. 敏感信息过滤:确保日志中不记录敏感数据如认证令牌

总结

通过本文的配置示例,我们了解了如何在 Envoy Gateway 中配置文本格式的访问日志。这种配置提供了基本的请求监控能力,是构建可观测性系统的基础。根据实际需求,开发者可以在此基础上进行扩展和定制,以满足不同场景下的日志收集和分析需求。

gateway Manages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway gateway 项目地址: https://gitcode.com/gh_mirrors/gate/gateway

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

管翔渊Lacey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值