我确实使用filebeat配置了Elastic Stack(Logstash + Elastic search + Kibana)。所以我的问题是我有多个服务器,我部署了我的应用程序实例(微服务应用程序)。我想从所有服务器捕获日志,但为此我必须在每个服务器中安装filebeat。这是正确的理解吗?或者我们可以配置类似于单个filebeat实例的东西能够从所有服务器(服务器可以是同一网络)获取日志并通过TCP或任何协议发送日志吗?
答案 0 :(得分:0)
是的,您必须在要废弃日志的所有服务器上部署filebeat。
答案 1 :(得分:0)
另一种选择是将logstash配置为侦听TCP端口,然后将应用程序配置为记录到套接字而不是文件。
input {
tcp {
port => 8192
codec => json
tags => [ "micrologs" ]
}
}
这将在端口8192上的Logstash框中设置一个侦听器。每次登录一个,每次都有一个连接,格式化为JSON。
input {
tcp {
port => 8192
codec => json_lines
tags => [ "micrologs" ]
}
}
这是相同的,除了连接是持久的,并且json_lines
编解码器用于根据传入连接中的JSON行分解日志事件。
您不必在此使用json
,如果需要,可以是纯文本。我使用JSON作为结构化日志的一个例子。