You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用EnvoyFilter将Envoy访问日志发送至Kafka的可行方案

问题

我需要一个能将Envoy访问日志发送至Kafka的EnvoyFilter。目前我使用envoy.extensions.access_loggers.file.v3.FileAccessLog将日志输出到标准输出,但未找到将访问日志发送至Kafka的方法,尝试通过typed_config自动实现,编写了如下配置:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: access-logs-to-kafka
spec:
  workloadSelector:
    labels:
      app: my-app
  configPatches:
    - applyTo: ACCESS_LOG
      match:
        context: SIDECAR_INBOUND
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.access_loggers.kafka
          typed_config:
            "@type": type.googleapis.com/envoy.extensions.access_loggers.kafka.v3.KafkaSink
            config:
              brokers:
                - broker.kafka.svc.cluster.local:9092
              topic: access-logs
              message_format: "%START_TIME% %REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL% %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-REQUEST-ID)% %UPSTREAM_HOST%\n"

但似乎不存在KafkaSink组件,也未找到其他解决办法,请问各位有类似实践经验吗?

解决方案

Envoy官方并未内置Kafka访问日志插件,以下是两种可行的实现方案:

方式一:File Access Log + 日志采集工具(推荐)

  • 保留现有FileAccessLog配置,将日志输出到标准输出或指定文件
  • 在Pod中部署日志采集sidecar(如Fluentd、Filebeat),或用DaemonSet做集群级部署
  • 配置采集工具监听Envoy日志,格式化后发送至Kafka

这种方案兼容性强,无需修改Envoy核心配置,运维成本低。以Fluentd为例,核心配置示例如下:

<source>
  @type tail
  path /var/log/envoy/access.log # 若监听标准输出则用/dev/stdout
  tag envoy.access
  <parse>
    @type regexp
    expression /^(?<start_time>[^ ]*) (?<method>[^ ]*) (?<path>[^ ]*) (?<protocol>[^ ]*) (?<response_code>[^ ]*) (?<response_flags>[^ ]*) (?<bytes_received>[^ ]*) (?<bytes_sent>[^ ]*) (?<duration>[^ ]*) (?<request_id>[^ ]*) (?<upstream_host>[^ ]*)$/
  </parse>
</source>

<match envoy.access>
  @type kafka2
  brokers broker.kafka.svc.cluster.local:9092
  topic access-logs
  <format>
    @type json
  </format>
</match>

方式二:自定义Envoy访问日志插件(开发成本高)

  • 基于Envoy Extension API开发自定义Kafka访问日志插件
  • 编译包含该插件的自定义Envoy镜像,替换Istio默认Envoy镜像
  • 通过EnvoyFilter配置启用自定义访问日志器

此方案需要具备Envoy插件开发能力,适合高度定制化场景,但运维维护成本较高。

内容的提问来源于stack exchange,提问作者amir.m ghazanfari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:05:33