配置 Redis 输出
编辑配置 Redis 输出编辑
Redis 输出将事件插入 Redis 列表或 Redis 频道。此输出插件与 Logstash 的 Redis 输入插件 兼容。
要使用此输出,请编辑 Packetbeat 配置文件以通过注释掉的方式禁用 Elasticsearch 输出,并通过添加 output.redis
来启用 Redis 输出。
示例配置
output.redis: hosts: ["localhost"] password: "my_password" key: "packetbeat" db: 0 timeout: 5
兼容性编辑
此输出预计与 3.2.4 到 5.0.8 之间的 Redis 版本兼容。其他版本也可能有效,但不受支持。
配置选项编辑
您可以在 packetbeat.yml
配置文件中指定以下 output.redis
选项
hosts
编辑
要连接的 Redis 服务器列表。如果启用了负载均衡,事件将分布到列表中的服务器。如果一台服务器变得不可达,事件将仅分布到可达的服务器。您可以通过指定 HOST
或 HOST:PORT
来定义每个 Redis 服务器。例如:"192.15.3.2"
或 "test.redis.io:12345"
。如果您未指定端口号,将使用 port
配置的值。使用 IP:PORT
对或 URL
配置每个 Redis 服务器。例如:redis://127.0.0.1:6379
或 rediss://127.0.0.1:6379
。URL 可以包含服务器特定的密码。例如:redis://:password@localhost:6379
。 redis
方案将禁用主机上的 ssl
设置,而 rediss
将强制使用 TLS。如果指定了 rediss
且未配置任何 ssl
设置,则输出将使用系统证书存储。
index
编辑
添加到事件元数据中的索引名称,供 Logstash 使用。默认值为“packetbeat”。
key
编辑
将事件发布到的 Redis 列表或频道的名称。如果未配置,将使用 index
设置的值。
您可以通过使用格式字符串访问任何事件字段来动态设置键。例如,此配置使用自定义字段 fields.list
来设置 Redis 列表键。如果缺少 fields.list
,将使用 fallback
output.redis: hosts: ["localhost"] key: "%{[fields.list]:fallback}"
要了解如何将自定义字段添加到事件,请参阅 fields
选项。
请参阅 keys
设置,了解其他动态设置键的方法。
keys
编辑
键选择器规则数组。每条规则都指定了要用于与规则匹配的事件的 key
。在发布过程中,Packetbeat 使用数组中第一个匹配的规则。规则可以包含条件、基于格式字符串的字段和名称映射。如果缺少 keys
设置或没有规则匹配,则使用 key
设置。
规则设置
-
index
- 要使用的键格式字符串。如果此字符串包含字段引用,例如
%{[fields.name]}
,则必须存在字段,否则规则将失败。 -
mappings
- 一个字典,它获取
key
返回的值并将其映射到新名称。 -
default
- 如果
mappings
未找到匹配项,则要使用的默认字符串值。 -
when
- 一个必须成功的条件才能执行当前规则。处理器支持的所有 条件 在这里也受支持。
示例 keys
设置
output.redis: hosts: ["localhost"] key: "default_list" keys: - key: "info_list" # send to info_list if `message` field contains INFO when.contains: message: "INFO" - key: "debug_list" # send to debug_list if `message` field contains DEBUG when.contains: message: "DEBUG" - key: "%{[fields.list]}" mappings: http: "frontend_list" nginx: "frontend_list" mysql: "backend_list"
password
编辑
用于身份验证的密码。默认情况下不进行身份验证。
db
编辑
发布事件的 Redis 数据库编号。默认值为 0。
datatype
编辑
用于发布事件的 Redis 数据类型。如果数据类型为 list
,则使用 Redis RPUSH 命令,并将所有事件添加到使用 key
定义的键的列表中。如果使用数据类型 channel
,则使用 Redis PUBLISH
命令,这意味着所有事件都将被推送到 Redis 的发布/订阅机制。通道的名称是 key
下定义的名称。默认值为 list
。
worker
或 workers
编辑
用于为配置为将事件发布到 Redis 的每个主机使用的 worker 数量。将此设置与 loadbalance
选项一起使用。例如,如果您有 2 个主机和 3 个 worker,则总共启动 6 个 worker(每个主机 3 个)。
loadbalance
编辑
当设置了 loadbalance: true
时,Packetbeat 会连接到所有配置的主机,并通过所有连接以并行方式发送数据。如果连接失败,数据将发送到其余主机,直到可以重新建立连接。只要 Packetbeat 可以连接到其配置主机中的至少一个,数据仍将被发送。
当设置了 loadbalance: false
时,Packetbeat 会一次将数据发送到单个主机。目标主机是随机从配置的主机列表中选择的,并且所有数据都会发送到该目标,直到连接失败,才会选择新的目标。只要 Packetbeat 可以连接到其配置主机中的至少一个,数据仍将被发送。
默认值为 true
。
timeout
编辑
Redis 连接超时(以秒为单位)。默认值为 5 秒。
backoff.init
编辑
在网络错误后等待尝试重新连接到 Redis 的时间(以秒为单位)。在等待 backoff.init
秒后,Packetbeat 会尝试重新连接。如果尝试失败,则回退计时器将呈指数级增加,直到达到 backoff.max
。在成功连接后,回退计时器将重置。默认值为 1s。
backoff.max
编辑
在网络错误后等待尝试连接到 Redis 的最大时间(以秒为单位)。默认值为 60s。
bulk_max_size
编辑
在一个 Redis 请求或管道中批量处理的事件的最大数量。默认值为 2048。
事件可以收集到批次中。Packetbeat 会将从队列中读取的、大于 bulk_max_size
的批次拆分成多个批次。
指定更大的批次大小可以通过降低发送事件的开销来提高性能。但是,大型批次大小也会增加处理时间,这可能会导致 API 错误、终止连接、发布请求超时,以及最终的吞吐量降低。
将 bulk_max_size
设置为小于或等于 0 的值会禁用批次拆分。当禁用拆分时,队列会决定批次中包含的事件数量。
proxy_url
编辑
连接到 Redis 服务器时要使用的 SOCKS5 代理的 URL。该值必须是具有 socks5://
方案的 URL。您不能使用 Web 代理,因为与 Redis 通信所使用的协议不是基于 HTTP 的。
如果 SOCKS5 代理服务器需要客户端身份验证,您可以在 URL 中嵌入用户名和密码。
使用代理时,主机名将在代理服务器上解析,而不是在客户端上解析。您可以通过设置 proxy_use_local_resolver
选项来更改此行为。
proxy_use_local_resolver
编辑
此选项决定使用代理时是否在本地解析 Redis 主机名。默认值为 false,这意味着名称解析发生在代理服务器上。