配置 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 选项

enabled编辑

enabled 配置是一个布尔值设置,用于启用或禁用输出。如果设置为 false,则输出被禁用。

默认值为 true

hosts编辑

要连接的 Redis 服务器列表。如果启用了负载均衡,事件将分布到列表中的服务器。如果一台服务器变得不可达,事件将仅分布到可达的服务器。您可以通过指定 HOSTHOST:PORT 来定义每个 Redis 服务器。例如:"192.15.3.2""test.redis.io:12345"。如果您未指定端口号,将使用 port 配置的值。使用 IP:PORT 对或 URL 配置每个 Redis 服务器。例如:redis://127.0.0.1:6379rediss://127.0.0.1:6379。URL 可以包含服务器特定的密码。例如:redis://:password@localhost:6379redis 方案将禁用主机上的 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

codec编辑

输出编解码器配置。如果缺少 codec 部分,事件将被 json 编码。

有关更多信息,请参阅 更改输出编解码器

workerworkers编辑

用于为配置为将事件发布到 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。

max_retries编辑

在发布失败后重试发布事件的次数。在指定的重试次数后,事件通常会被丢弃。

max_retries 设置为小于 0 的值以重试,直到所有事件都被发布。

默认值为 3。

bulk_max_size编辑

在一个 Redis 请求或管道中批量处理的事件的最大数量。默认值为 2048。

事件可以收集到批次中。Packetbeat 会将从队列中读取的、大于 bulk_max_size 的批次拆分成多个批次。

指定更大的批次大小可以通过降低发送事件的开销来提高性能。但是,大型批次大小也会增加处理时间,这可能会导致 API 错误、终止连接、发布请求超时,以及最终的吞吐量降低。

bulk_max_size 设置为小于或等于 0 的值会禁用批次拆分。当禁用拆分时,队列会决定批次中包含的事件数量。

ssl编辑

用于 SSL 参数的配置选项,例如用于由 SSL 代理(例如 stunnel)保护的 Redis 连接的根 CA。有关更多信息,请参阅 SSL

proxy_url编辑

连接到 Redis 服务器时要使用的 SOCKS5 代理的 URL。该值必须是具有 socks5:// 方案的 URL。您不能使用 Web 代理,因为与 Redis 通信所使用的协议不是基于 HTTP 的。

如果 SOCKS5 代理服务器需要客户端身份验证,您可以在 URL 中嵌入用户名和密码。

使用代理时,主机名将在代理服务器上解析,而不是在客户端上解析。您可以通过设置 proxy_use_local_resolver 选项来更改此行为。

proxy_use_local_resolver编辑

此选项决定使用代理时是否在本地解析 Redis 主机名。默认值为 false,这意味着名称解析发生在代理服务器上。