多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Logstash间通信 您可以通过将Lumberjack output连接到Beats input来建立两台Logstash机器之间的通信。如果数据路径跨网络或者穿透防火墙,你可能需要这种配置。如果没有迫切的需求,请不要实施这种方案。 如果你正在寻找关于在一个Logstash实例中连接多个管道的信息,查看[管道间通信(beta)](https://www.elastic.co/guide/en/logstash/6.5/pipeline-to-pipeline.html) # 配置概述 使用Lumberjack协议来连接两个Logstash机器。 1. 生成一个可信的SSL证书(lumberjac协议需要) 2. 复制SSL证书到上游Logstash机器。 3. 复制SSL证书和key到下游Logstash机器。 4. 设置上游Logstash机器使用Lumberjack output来发送数据。 5. 设置下游Logstash机器通过Beats input监听来自Lumberjack的连接。 6. 测试 ## 生成一个自签名证书和key 使用`openssl req`命令来生成一个自签名证书和key。`openssl req`命令在某些系统中是可用的。你可能需要安装OpenSSL命令对于其他的系统。 运行下面的命令: ```bash openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout lumberjack.key -out lumberjack.cert -subj /CN=localhost ``` Where: + `lumberjack.key`是SSL key的名字。 + `lumberjack.cert`是SSL 证书的名字。 + `localhost`是上游Logstash主机的名字 命令会输出类似下面的信息: ``` Generating a 2048 bit RSA private key .................................+++ ....................+++ writing new private key to 'lumberjack.key' ``` ## 复制SSL证书和key 复制SSL证书到上游Logstash机器。 复制SSL证书和key到下游Logstash机器。 ## 启动上游Logstash实例 启动Logstash并生成测试事件: ```bash bin/logstash -e 'input { generator { count => 5 } } output { lumberjack { codec => json hosts => "mydownstreamhost" ssl_certificate => "lumberjack.cert" port => 5000 } }' ``` 这个命令示例发送5个事件到mydownstreamhost:5000使用SSL证书。 (个人测试`mydownstreamhost`应该为IP地址,或者可以被解析的域名或者Hostname) ## 启动下游Logstash实例 启动下游Logstash实例: ```bash bin/logstash -e 'input { beats { codec => json port => 5000 ssl => true ssl_certificate => "lumberjack.cert" ssl_key => "lumberjack.key"} }' ``` This sample command sets port 5000 to listen for incoming Beats input. ## 验证 观察下游Logstash机器是否有传入事件。你应该会看到五个类似于以下内容的事件: ```json { "@timestamp" => 2018-02-07T12:16:39.415Z, "sequence" => 0 "tags" => [ [0] "beats_input_codec_json_applied" ], "message" => "Hello world", "@version" => "1", "host" => "ls1.semicomplete.com" } ``` If you see all five events with consistent fields and formatting, incrementing by one, then your configuration is correct。