我需要一个 envoyfilter 将 envoy 访问日志发送到 kafka。我用
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 我什么也没做
你们有类似的实验吗?
正如@amir提到的,我们还尝试了第一种方法,即将访问日志打印到stdout,并使用fluidd通过连接器将这些日志发送到kafka。至少在小规模上它运作良好。还没有大规模尝试过,托运人的可靠性可能会成为一个问题。