Logstash 到 Logstash:输出到输入

编辑

Logstash 到 Logstash:输出到输入

编辑

Logstash 输出到 Logstash 输入是 Logstash 之间通信的默认方法。

在实现 Logstash 到 Logstash 之前,请查看这些 注意事项

配置概述

编辑

要连接两个 Logstash 实例

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

配置下游 Logstash 以使用 Logstash 输入

编辑

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

  • port - 设置自定义端口。如果未提供任何端口,则默认为 9800。
input {
    logstash {
        port => 9800
    }
}

配置上游 Logstash 以使用 Logstash 输出

编辑

为了在将数据从一个 Logstash 发送到另一个 Logstash 时获得最佳性能,数据会被批量处理和压缩。因此,上游 Logstash(发送 Logstash)只需要关注使用这些选项配置接收端点

  • hosts - 一个或多个接收 Logstash 主机和端口对。如果未指定端口,则将使用 9800。

Logstash 将批量事件负载均衡到其所有配置的下游主机。由网络问题、反压或其他情况造成的任何故障都将导致下游主机至少被隔离负载均衡 60 秒。

output {
    logstash {
        hosts => ["10.0.0.123", "10.0.1.123:9800"]
    }
}

保护 Logstash 到 Logstash

编辑

保护 Logstash 实例之间的通信非常重要。使用 SSL/TLS 互认证,以确保上游 Logstash 实例将加密数据发送到受信任的下游 Logstash 实例,反之亦然。

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

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

  2. 配置下游(接收)Logstash 以使用 SSL。将这些设置添加到 Logstash 输入配置

    • ssl_enabled:设置为 true 时,它启用 Logstash 使用 SSL/TLS
    • ssl_key:指定 Logstash 用于向客户端进行身份验证的密钥。
    • ssl_certificate:指定 Logstash 用于向客户端进行身份验证的证书。
    • ssl_certificate_authorities:配置 Logstash 以信任指定 CA 签署的任何证书。
    • ssl_client_authentication:指定 Logstash 服务器是否根据 CA 验证客户端证书。

    例如

    input {
      logstash {
        ...
    
        ssl_enabled => true
        ssl_key => "server.pkcs8.key"
        ssl_certificate => "server.crt"
        ssl_certificate_authorities => "ca.crt"
        ssl_client_authentication => required
      }
    }
  3. 配置上游(发送)Logstash 以使用 SSL。将这些设置添加到 Logstash 输出配置

    • ssl_key:指定 Logstash 客户端用于向 Logstash 服务器进行身份验证的密钥。
    • ssl_certificate:指定 Logstash 客户端用于向 Logstash 服务器进行身份验证的证书。
    • ssl_certificate_authorities:配置 Logstash 客户端以信任指定 CA 签署的任何证书。

    例如

    output {
      logstash {
        ...
    
        ssl_enabled => true
        ssl_key => "client.pkcs8.key"
        ssl_certificate => "client.crt"
        ssl_certificate_authorities => "ca.crt"
      }
    }
  4. 如果您希望执行额外的身份验证步骤,您还可以在两个 Logstash 实例中都使用基本的用户名/密码身份验证

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

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

    ...
      logstash {
        ...
    
        username => "your-user"
        password => "your-secret"
      }
    ...