Logstash-to-Logstash:HTTP 输出到 HTTP 输入
编辑Logstash-to-Logstash:HTTP 输出到 HTTP 输入编辑
HTTP 输出到 HTTP 输入是 Logstash-to-Logstash 通信中 Lumberjack 输出到 Beats 输入方法的替代方案。此方法依赖于使用 http 输出 到 http 输入 插件。
使用 HTTP 输入/输出插件的 Logstash-to-Logstash 现在已被弃用,取而代之的是 Logstash-to-Logstash:输出到输入。
配置概述编辑
要使用 HTTP 协议连接两个 Logstash 实例
- 配置下游(服务器)Logstash 以使用 HTTP 输入
- 配置上游(客户端)Logstash 以使用 HTTP 输出
- 保护 HTTP 输入和 HTTP 输出之间的通信
配置下游 Logstash 以使用 HTTP 输入编辑
配置下游(接收)Logstash 上的 HTTP 输入以接收连接。最小配置需要以下选项
-
port
- 设置自定义端口。 -
additional_codecs
- 设置application/json
为json_lines
。
input { http { port => 8080 additional_codecs => { "application/json" => "json_lines" } } }
配置上游 Logstash 以使用 HTTP 输出编辑
为了在从一个 Logstash 发送数据到另一个 Logstash 时获得最佳性能,数据需要进行批处理和压缩。因此,上游 Logstash(发送 Logstash)需要使用以下选项进行配置
-
url
- 接收 Logstash。 -
http_method
- 设置为post
。 -
retry_non_idempotent
- 设置为true
,以便重试失败的事件。 -
format
- 设置为json_batch
以对数据进行批处理。 -
http_compression
- 设置为true
以确保数据被压缩。
output { http { url => '<protocol>://<downstream-logstash>:<port>' http_method => post retry_non_idempotent => true format => json_batch http_compression => true } }
保护 Logstash 到 Logstash编辑
保护 Logstash 实例之间的通信非常重要。使用 SSL/TLS 互认证,以确保上游 Logstash 实例将加密数据发送到可信的下游 Logstash 实例,反之亦然。
-
创建证书颁发机构 (CA) 以签署您计划在 Logstash 实例之间使用的证书。创建正确的 SSL/TLS 基础设施超出了本文档的范围。
我们建议您使用 elasticsearch-certutil 工具生成您的证书。
-
配置下游(接收)Logstash 以使用 SSL。将以下设置添加到 HTTP 输入配置中
-
ssl
: 当设置为true
时,它启用 Logstash 使用 SSL/TLS -
ssl_key
: 指定 Logstash 用于向客户端进行身份验证的密钥。 -
ssl_certificate
: 指定 Logstash 用于向客户端进行身份验证的证书。 -
ssl_certificate_authorities
: 配置 Logstash 以信任由指定 CA 签署的任何证书。 -
ssl_verify_mode
: 指定 Logstash 服务器是否根据 CA 验证客户端证书。
例如
input { http { ... ssl => true ssl_key => "server.key.pk8" ssl_certificate => "server.crt" ssl_certificate_authorities => "ca.crt" ssl_verify_mode => force_peer } }
-
-
配置上游(发送)Logstash 以使用 SSL。将以下设置添加到 HTTP 输出配置中
-
cacert
: 配置 Logstash 客户端以信任由指定 CA 签署的任何证书。 -
client_key
: 指定 Logstash 客户端用于向 Logstash 服务器进行身份验证的密钥。 -
client_cert
: 指定 Logstash 客户端用于向 Logstash 服务器进行身份验证的证书。
例如
output { http { ... cacert => "ca.crt" client_key => "client.key.pk8" client_cert => "client.crt" } }
-
-
如果您想要额外的身份验证步骤,您也可以在两个 Logstash 实例中使用基本的用户名/密码身份验证
-
user
: 设置用于身份验证的用户名。 -
password
: 设置用于身份验证的密码。
例如,您需要将以下内容添加到两个 Logstash 实例中
... http { ... user => "your-user" password => "your-secret" } ...
-