ELK堆栈中的Logstash和filebeat

问题描述 投票:0回答:1

我们在服务器上设置elasticsearch,kibana,logstash和filebeat来分析来自许多应用程序的日志文件。由于原因*每个应用程序日志文件最终都在ELK服务器上的单独目录中。我们有大约20个日志文件。

  1. 据我所知,我们可以为每个应用程序日志文件运行logstash管道配置文件。这将是一个logstash实例,并行运行20个管道,每个管道都需要自己的节拍端口。请确认这是正确的?
  2. 我们可以运行一个filebeat实例,还是每个管道/日志文件需要一个?
  3. 这个架构是否正常,或者您是否看到任何重大缺陷?

谢谢!

*有不同的供应商负责不同的应用程序,他们运行跨许多不同的操作系统,其中许多不会或不能安装任何文件。

elasticsearch logstash filebeat
1个回答
0
投票

我们不建议从网络卷读取日志文件。只要有可能,在主机上安装Filebeat并直接从那里发送日志文件。从网络卷(尤其是在Windows上)读取文件可能会产生意外的副作用。例如,更改的文件标识符可能导致Filebeat再次从头开始读取日志文件。

Reference

我们始终建议在远程服务器上安装Filebeat。不支持使用共享文件夹。典型的设置是在中央位置(一个或多个服务器)安装Logstash + Elasticsearch + Kibana,并在远程计算机上安装Filebeat,从中收集数据。

Reference

对于一个运行的filebeat实例,您可以通过定义多个输入节来将不同的配置设置应用于不同的文件,如下例所示,check here for more

filebeat.inputs:

- type: log

  enabled: true
  paths:
    - 'C:\App01_Logs\log.txt'
  tags: ["App01"]
  fields: 
    app_name: App01

- type: log
  enabled: true
  paths:
    - 'C:\App02_Logs\log.txt'
  tags: ["App02"]
  fields: 
    app_name: App02

- type: log
  enabled: true
  paths:
    - 'C:\App03_Logs\log.txt'
  tags: ["App03"]
  fields: 
    app_name: App03

并且您可以在过滤器中使用if语句创建一个logstash管道

filter {

    if [fields][app_name] == "App01" {

      grok { }

    } else if [fields][app_name] == "App02" {

      grok { }

    } else {

      grok { }

    }
}

我们从filebeat发送的条件也可以是if "App02" in [tags]if [source]=="C:\App01_Logs\log.txt"

© www.soinside.com 2019 - 2024. All rights reserved.