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 实例

  1. 配置下游(服务器)Logstash 以使用 HTTP 输入
  2. 配置上游(客户端)Logstash 以使用 HTTP 输出
  3. 保护 HTTP 输入和 HTTP 输出之间的通信

配置下游 Logstash 以使用 HTTP 输入编辑

配置下游(接收)Logstash 上的 HTTP 输入以接收连接。最小配置需要以下选项

  • port - 设置自定义端口。
  • additional_codecs - 设置 application/jsonjson_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 实例,反之亦然。

  1. 创建证书颁发机构 (CA) 以签署您计划在 Logstash 实例之间使用的证书。创建正确的 SSL/TLS 基础设施超出了本文档的范围。

    我们建议您使用 elasticsearch-certutil 工具生成您的证书。

  2. 配置下游(接收)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
      }
    }
  3. 配置上游(发送)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"
      }
    }
  4. 如果您想要额外的身份验证步骤,您也可以在两个 Logstash 实例中使用基本的用户名/密码身份验证

    • user: 设置用于身份验证的用户名。
    • password: 设置用于身份验证的密码。

    例如,您需要将以下内容添加到两个 Logstash 实例中

    ...
      http {
        ...
    
        user => "your-user"
        password => "your-secret"
      }
    ...