Logstash 到 Logstash:HTTP 输出到 HTTP 输入

编辑

Logstash 到 Logstash:HTTP 输出到 HTTP 输入

编辑

HTTP 输出到 HTTP 输入是 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"
      }
    ...