配置 Redis 输出
编辑配置 Redis 输出编辑
Redis 输出将事件插入到 Redis 列表或 Redis 通道中。此输出插件与 Logstash 的 Redis 输入插件 兼容。
要使用此输出,请编辑 APM Server 配置文件,通过将其注释掉来禁用 Elasticsearch 输出,并通过添加 output.redis
来启用 Redis 输出。
配置示例
output.redis: hosts: ["localhost"] password: "my_password" key: "apm-server" db: 0 timeout: 5
Kibana 配置编辑
APM Server 使用 APM 集成来设置和管理 APM 模板、策略和管道。为了确认集成已安装,APM Server 会在启动时轮询 Elasticsearch 或 Kibana。当使用非 Elasticsearch 输出时,APM Server 需要通过 Kibana 端点 访问 Kibana。
配置示例
apm-server: kibana: enabled: true host: "https://..." username: "elastic" password: "xxx"
兼容性编辑
此输出预计可与 3.2.4 到 5.0.8 之间的所有 Redis 版本一起使用。其他版本也可能有效,但不支持。
配置选项编辑
您可以在 apm-server.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 使用的索引名称。默认值为“apm-server”。
key
编辑
发布事件到的 Redis 列表或通道的名称。如果未配置,则使用 index
设置的值。
您可以通过使用格式字符串访问任何事件字段来动态设置键。例如,此配置使用自定义字段 fields.list
来设置 Redis 列表键。如果缺少 fields.list
,则使用 fallback
output.redis: hosts: ["localhost"] key: "%{[fields.list]:fallback}"
有关动态设置键的其他方法,请参阅 keys
设置。
keys
编辑
键选择器规则数组。每个规则都指定用于匹配该规则的事件的 key
。在发布期间,APM Server 使用数组中的第一个匹配规则。规则可以包含条件、基于格式字符串的字段和名称映射。如果缺少 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
编辑
用于配置为将事件发布到 Redis 的每个主机的 worker 数量。将此设置与 loadbalance
选项一起使用。例如,如果您有 2 个主机和 3 个 worker,则总共会启动 6 个 worker(每个主机 3 个)。
loadbalance
编辑
如果设置为 true 并且配置了多个主机或 worker,则输出插件会将已发布的事件负载均衡到所有 Redis 主机上。如果设置为 false,则输出插件会将所有事件仅发送到一个主机(随机确定),并在当前选定的主机变得不可访问时切换到另一个主机。默认值为 true。
timeout
编辑
Redis 连接超时(以秒为单位)。默认值为 5 秒。
backoff.init
编辑
网络错误后尝试重新连接到 Redis 之前的等待时间(以秒为单位)。等待 backoff.init
秒后,APM Server 尝试重新连接。如果尝试失败,则退避计时器会呈指数级增加,直至达到 backoff.max
。成功连接后,退避计时器将重置。默认值为 1s
。
backoff.max
编辑
网络错误后尝试连接到 Redis 之前的最长等待时间(以秒为单位)。默认值为 60s
。
bulk_max_size
编辑
在单个 Redis 请求或管道中批量处理的最大事件数。默认值为 2048。
如果 Beat 发送单个事件,则会将事件收集到批处理中。如果 Beat 发布大量事件(大于 bulk_max_size
指定的值),则会拆分该批处理。
指定较大的批处理大小可以通过降低发送事件的开销来提高性能。但是,过大的批处理大小也会增加处理时间,这可能会导致 API 错误、连接断开、发布请求超时,最终导致吞吐量降低。
将 bulk_max_size
设置为小于或等于 0 的值将禁用批处理拆分。禁用拆分后,队列将决定批处理中包含的事件数量。
ssl
编辑
用于 SSL 参数的配置选项,例如由 SSL 代理(例如 stunnel)保护的 Redis 连接的根 CA。有关详细信息,请参阅SSL/TLS 输出设置。
proxy_url
编辑
连接到 Redis 服务器时要使用的 SOCKS5 代理的 URL。该值必须是以 socks5://
为方案的 URL。您不能使用 Web 代理,因为用于与 Redis 通信的协议不是基于 HTTP 的。
如果 SOCKS5 代理服务器需要客户端身份验证,则可以在 URL 中嵌入用户名和密码。
使用代理时,主机名会在代理服务器上解析,而不是在客户端上解析。您可以通过设置 proxy_use_local_resolver
选项来更改此行为。
proxy_use_local_resolver
编辑
此选项确定在使用代理时是否在本地解析 Redis 主机名。默认值为 false,这意味着名称解析发生在代理服务器上。