作者:徐大总统_584 | 来源:互联网 | 2023-10-13 11:23
简短的问题是:是否可以从远程服务器中提取日志(在日志文件中)并将其提取到ELK堆栈中。
长话如下:
- 我们有一个
DMZ
且面向公众的设置
- 我们有一个
intranet
环境,该环境托管许多内部系统,包括ELK堆栈
- 由于安全规定,我们无法建立从
DMZ
到intranet
的连接(在IP级别上)。
- 但是我们可以建立从
intranet
到DMZ
的连接
由于此设置,我们无法遵循在存储日志的服务器上安装Filebeat
并将邮件推送到我们的logstash
安装的常规方法。
我们想做的事情看起来类似于以下内容:
- Filebeat或任何其他进程在
DMZ
内部的服务器上收集日志
- 在此服务器上,有一些过程(
Filebeat
,logstash
,另一个elasticsearch
实例?)将这些信息保存在本地存储中
- 该工具(无论它到底是什么)都会在
intranet
可用的端口上进行侦听
-
intranet
中的另一个工具连接到DMZ
工具并提取所有收集的日志以进行进一步处理。
我们的调查结果只得出了将日志信息推送到logstash
或elasticsearch
的解决方案。
我们不想做的一件事是使用文件共享使日志文件直接从intranet
开始可用。
我们的问题是,我们的想法是否完全可能实现,如果可以的话,我们将使用什么工具以及使用哪种设置来实现这一目标。
您可以使用Kafka作为消息代理尝试以下操作
在您的DMZ
服务器上,您将通过文件拍收集日志并将其发送到Logstash实例,然后该Logstash实例会将您的日志输出到Kafka。
这是一个简单的管道,具有beats
输入,fitler和kafka
输出,如果您不想对数据进行任何扩充,则可以将日志直接发送到kafka来自文件拍。
然后您的kafka经纪人将在端口上侦听并等待任何使用者连接并使用消息。
在您的intranet
上,您将需要一个Logstash实例,并使用kafka
输入使用管道,该管道将充当kafka使用者并提取您的消息,然后您可以使用{{1 }}输出,然后存储到您的elasticsearch
elasticsearch集群中。
有关更多信息,请阅读logstash文档中的kafka documentation和kafka input和kafka output的文档。