Logstash 到 Logstash:HTTP 输出到 HTTP 输入

编辑

Logstash 到 Logstash:HTTP 输出到 HTTP 输入

编辑

HTTP 输出到 HTTP 输入是 Logstash 到 Logstash 通信中 Lumberjack 输出到 Beats 输入方法的替代方案。此方法依赖于使用 http 输出http 输入 插件。

使用 HTTP 输入/输出插件的 Logstash 到 Logstash 正在被弃用,取而代之的是 Logstash 到 Logstash:输出到输入

配置概述

编辑

要使用 HTTP 协议连接两个 Logstash 实例

  1. 配置下游(服务器)Logstash 以使用 HTTP 输入
  2. 配置上游(客户端)Logstash 以使用 HTTP 输出
  3. 确保 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 实例,反之亦然。

  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"
      }
    ...