配置 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”。

将事件发布到的 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

编辑

用于身份验证的密码。默认情况下不进行身份验证。

发布事件的 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。成功连接后,回退计时器将重置。默认值为 1 秒。

backoff.max

编辑

在发生网络错误后尝试连接到 Redis 之前等待的最大秒数。默认值为 60 秒。

max_retries

编辑

在发布失败后重试发布事件的次数。在指定的重试次数之后,通常会删除事件。

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

默认值为 3。

bulk_max_size

编辑

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

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

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

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

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

proxy_url

编辑

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

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

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

proxy_use_local_resolver

编辑

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