Kafka 输出插件
编辑Kafka 输出插件编辑
- 是 kafka 集成插件 的一部分
- 集成版本:v11.4.2
- 发布日期:2024-05-17
- 变更日志
有关其他版本,请参阅 版本化插件文档。
获取帮助编辑
如果您对插件有任何疑问,请在 Discuss 论坛中发布主题。对于错误或功能请求,请在 Github 中创建问题。有关 Elastic 支持的插件列表,请参阅 Elastic 支持矩阵。
描述编辑
将事件写入 Kafka 主题。
此插件使用 Kafka 客户端 3.4。有关代理兼容性,请参阅官方 Kafka 兼容性参考。如果链接的兼容性维基百科未更新,请联系 Kafka 支持/社区以确认兼容性。
如果您需要此插件中尚未提供的功能(包括客户端版本升级),请提交一个包含您需求详细信息的问题。
此输出支持通过以下方式连接到 Kafka
- SSL(需要插件版本 3.0.0 或更高版本)
- Kerberos SASL(需要插件版本 5.1.0 或更高版本)
默认情况下,安全性已禁用,但可以根据需要启用。
唯一必需的配置是 topic_id。
默认编解码器是纯文本。Logstash 不仅会使用消息字段,还会使用时间戳和主机名对您的事件进行编码。
如果您希望将事件的完整内容作为 json 发送,您应该在输出配置中设置编解码器,如下所示
output { kafka { codec => json topic_id => "mytopic" } }
有关更多信息,请参阅 https://kafka.apache.org/34/documentation.html#theproducer
Kafka 生产者配置:https://kafka.apache.org/34/documentation.html#producerconfigs
此插件不支持在与 Kafka 代理通信时使用代理。
Kafka 输出配置选项编辑
此插件支持以下配置选项,以及稍后描述的 通用选项。
其中一些选项映射到 Kafka 选项。默认值通常反映 Kafka 的默认设置,并且可能会在 Kafka 的生产者默认值更改时发生变化。有关更多详细信息,请参阅 https://kafka.apache.org/34/documentation。
设置 | 输入类型 | 必需 |
---|---|---|
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
字符串,其中之一为 |
否 |
|
否 |
||
有效的系统文件路径 |
否 |
|
有效的系统文件路径 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
有效的系统文件路径 |
否 |
|
否 |
||
否 |
||
有效的系统文件路径 |
否 |
|
否 |
||
否 |
||
是 |
||
否 |
另请参阅 通用选项,了解所有输出插件支持的选项列表。
acks
编辑
- 值可以是以下任何一个:
0
,1
,all
- 默认值为
"1"
生产者在将请求视为已完成之前,要求领导者收到的确认次数。
acks=0
。生产者不会等待服务器的任何确认。
acks=1
。领导者会将记录写入其本地日志,但会在不等待所有跟随者的完全确认的情况下进行响应。
acks=all
。领导者会等待完整的同步副本集,然后才确认记录。
batch_size
编辑
- 值类型为 数字
- 默认值为
16384
。
当多个记录被发送到同一个分区时,生产者会尝试将记录批处理在一起,以减少请求次数。这有助于提高客户端和服务器的性能。此配置控制默认的批处理大小(以字节为单位)。
bootstrap_servers
编辑
- 值类型为 字符串
- 默认值为
"localhost:9092"
这是用于引导的,生产者只会将其用于获取元数据(主题、分区和副本)。用于发送实际数据的套接字连接将根据元数据中返回的代理信息建立。格式为 host1:port1,host2:port2
,列表可以是代理的子集,也可以是指向代理子集的 VIP。
client_dns_lookup
编辑
- 值类型为 字符串
- 有效选项为
use_all_dns_ips
,resolve_canonical_bootstrap_servers_only
,default
- 默认值为
"default"
控制如何执行 DNS 查找。如果设置为 use_all_dns_ips
,Logstash 会尝试所有为主机名返回的 IP 地址,然后再失败连接。如果设置为 resolve_canonical_bootstrap_servers_only
,每个条目都会被解析并扩展为规范名称列表。
从 Kafka 3 开始,client.dns.lookup
的 default
值已被删除。如果未明确配置,则默认为 use_all_dns_ips
。
client_id
编辑
- 值类型为 字符串
- 默认值为
"logstash"
在发出请求时传递给服务器的 ID 字符串。这样做的目的是能够跟踪请求的来源,不仅仅是 ip/port,而是允许在请求中包含逻辑应用程序名称。
compression_type
编辑
- 值可以是以下任何一个:
none
,gzip
,snappy
,lz4
,zstd
- 默认值为
"none"
生产者生成的所有数据的压缩类型。默认值为 none(表示不压缩)。有效值为 none、gzip、snappy、lz4 或 zstd。
jaas_path
编辑
- 值类型为 路径
- 此设置没有默认值。
Java 身份验证和授权服务 (JAAS) API 为 Kafka 提供用户身份验证和授权服务。此设置提供 JAAS 文件的路径。Kafka 客户端的 JAAS 文件示例
KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true renewTicket=true serviceName="kafka"; };
请注意,在配置文件中指定 jaas_path
和 kerberos_config
会将它们添加到全局 JVM 系统属性中。这意味着如果您有多个 Kafka 输入,它们将共享相同的 jaas_path
和 kerberos_config
。如果这不是您想要的,您需要在不同的 JVM 实例上运行 Logstash 的单独实例。
kerberos_config
edit
- 值类型为 路径
- 此设置没有默认值。
可选的 Kerberos 配置文件路径。这是 krb5.conf 样式,如 https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html 中所述。
key_serializer
edit
- 值类型为 字符串
- 默认值为
"org.apache.kafka.common.serialization.StringSerializer"
消息键的序列化器类。
linger_ms
edit
- 值类型为 数字
- 默认值为
0
生产者将任何在请求传输之间到达的记录分组到单个批处理请求中。通常,这仅在负载下发生,此时记录到达的速度快于它们可以发送出去的速度。但是,在某些情况下,客户端可能希望即使在中等负载下也减少请求数量。此设置通过添加少量人工延迟来实现这一点,即,生产者不会立即发送记录,而是会等待最长指定的延迟,以允许发送其他记录,以便将发送批处理在一起。
message_headers
edit
键值对的映射,每个对应于标头名称及其值。示例
message_headers => { "event_timestamp" => "%{@timestamp}" }
partitioner
edit
- 值类型为 字符串
- 此设置没有默认值。
默认行为是散列事件的 message_key
以获取分区。当没有消息键时,插件以循环方式选择一个分区。
选择分区策略的可用选项如下
-
default
使用如上所述的默认分区器 -
round_robin
将写入均匀地分布到所有分区,而不管message_key
如何 -
uniform_sticky
在一个批次期间坚持一个分区,然后随机选择一个新的分区
request_timeout_ms
edit
- 值类型为 数字
- 默认值为
40000
毫秒(40 秒)。
该配置控制客户端等待请求响应的最长时间。如果在超时时间到期之前未收到响应,客户端将根据需要重新发送请求,或者如果重试次数用尽则失败请求。
retries
edit
- 值类型为 数字
- 此设置没有默认值。
默认重试行为是重试直到成功。为了防止数据丢失,不建议更改此设置。
如果您选择设置 retries
,大于零的值将导致客户端仅重试固定次数。如果传输故障持续时间超过您的重试次数(网络中断、Kafka 停机等),这将导致数据丢失。
小于零的值是配置错误。
从版本 10.5.0 开始,此插件将仅重试是 RetriableException 和 InterruptException 子类的异常。如果生产消息抛出任何其他异常,则会记录错误,并且消息将被丢弃,不会重试。这可以防止 Logstash 管道无限期地挂起。
在 10.5.0 之前的版本中,任何异常都会无限期地重试,除非配置了 retries
选项。
sasl_jaas_config
edit
- 值类型为 字符串
- 此设置没有默认值。
此插件实例的本地 JAAS 配置设置,与使用 jaas_path
配置的配置文件设置相反,后者在整个 JVM 中共享。这允许每个插件实例都有自己的配置。
如果同时设置了 sasl_jaas_config
和 jaas_path
配置,则此处的设置优先。
示例(Azure 事件中心的设置)
output { kafka { sasl_jaas_config => "org.apache.kafka.common.security.plain.PlainLoginModule required username='auser' password='apassword';" } }
sasl_kerberos_service_name
edit
- 值类型为 字符串
- 此设置没有默认值。
Kafka 代理运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。
security_protocol
edit
- 值可以是以下任何一个:
PLAINTEXT
、SSL
、SASL_PLAINTEXT
、SASL_SSL
- 默认值为
"PLAINTEXT"
要使用的安全协议,可以是 PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL 中的任何一个。