Logstash 到 Logstash:HTTP 输出到 HTTP 输入
编辑Logstash 到 Logstash:HTTP 输出到 HTTP 输入
编辑HTTP 输出到 HTTP 输入是 Logstash 之间通信的另一种方法,它与 Lumberjack 输出到 Beats 输入的方法不同。这种方法依赖于使用 http 输出 插件到 http 输入 插件。
使用 HTTP 输入/输出插件的 Logstash 到 Logstash 通信方式现已被弃用,建议使用 Logstash 到 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" } ...
-