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