Kafka Broker 过滤器¶
Apache Kafka broker 过滤器用于解码 Apache Kafka 的客户端协议,该客户端协议中请求和响应的消息都可以解码。支持 Kafka 2.4.0 中的消息版本。该过滤器会尝试不影响客户端与 broker 之间的通信,因此无法解码的消息(由于 Kafka 客户端或 broker 运行的版本比该过滤器所支持的版本新)将按原样转发。
此过滤器的名称应该被配置为 envoy.filters.network.kafka_broker。
Attention
kafka_broker 过滤器是实验性的,目前正在开发中。功能可能会随着时间的推移而扩展,并且配置结构可能会发生变化。
配置¶
Kafka Broker 过滤器应与 TCP 代理过滤器一起使用,如下面的配置片段所示:
listeners:
- address:
socket_address:
address: 127.0.0.1 # Host that Kafka clients should connect to.
port_value: 19092 # Port that Kafka clients should connect to.
filter_chains:
- filters:
- name: envoy.filters.network.kafka_broker
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.kafka_broker.v3.KafkaBroker
stat_prefix: exampleprefix
- name: envoy.filters.network.tcp_proxy
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
stat_prefix: tcp
cluster: localkafka
clusters:
- name: localkafka
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
load_assignment:
cluster_name: some_service
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1 # Kafka broker's host
port_value: 9092 # Kafka broker's port.
Kafka broker 需要公布 Envoy 的监听器端口,而不是自己的。
# Listener value needs to be equal to cluster value in Envoy config
# (will receive payloads from Envoy).
listeners=PLAINTEXT://127.0.0.1:9092
# Advertised listener value needs to be equal to Envoy's listener
# (will make clients discovering this broker talk to it through Envoy).
advertised.listeners=PLAINTEXT://127.0.0.1:19092
统计¶
每个配置的 Kafka Broker 过滤器的统计信息都以 kafka.<stat_prefix>. 为根,每个消息类型具有多个统计信息。
名称 |
类型 |
描述 |
---|---|---|
request.TYPE |
Counter |
从 Kafka 客户端收到特定类型的请求的次数 |
request.unknown |
Counter |
接收到此过滤器无法识别的格式的请求的次数 |
request.failure |
Counter |
接收到格式无效的请求或发生其他处理异常的次数 |
response.TYPE |
Counter |
从 Kafka broker 处收到特定类型的响应的次数 |
response.TYPE_duration |
Histogram |
响应生成时间(以毫秒为单位) |
response.unknown |
Counter |
接收到此过滤器无法识别的格式的响应的次数 |
response.failure |
Counter |
接收到格式无效的响应或发生其他处理异常的次数 |