Logstash и filebeat в стеке ELK - PullRequest
0 голосов
/ 26 марта 2019

Мы настраиваем эластичный поиск, kibana, logstash и filebeat на сервере для анализа файлов журналов из многих приложений. По причинам * каждый файл журнала приложения помещается в отдельный каталог на сервере ELK. У нас есть около 20 файлов журнала.

  1. Как я понимаю, мы можем запустить файл конфигурации конвейера logstash для каждого файл журнала приложения. Это будет один запущенный экземпляр logstash с 20 трубопроводами параллельно, и каждый трубопровод будет нуждаться в своем собственном бить порт. Пожалуйста, подтвердите, что это правильно?
  2. Можем ли мы запустить один экземпляр filebeat или нам нужен один для каждого Трубопровод / файл_журнала
  3. Эта архитектура в порядке, или вы видите какие-то серьезные недостатки?

Спасибо!

* Существуют разные поставщики, отвечающие за разные приложения, и они используют разные операционные системы, и многие из них не устанавливают или не могут устанавливать что-либо вроде filebeats.

1 Ответ

0 голосов
/ 26 марта 2019

Мы не рекомендуем читать файлы журналов с сетевых томов. Всякий раз, когда возможно, установите Filebeat на хост-машине и отправьте файлы журнала прямо оттуда. Чтение файлов с сетевых томов (особенно на Windows) может иметь неожиданные побочные эффекты. Например, измененный файл идентификаторы могут привести к тому, что Filebeat будет считывать файл журнала с нуля еще раз.

Ссылка

Мы всегда рекомендуем устанавливать Filebeat на удаленных серверах. С помощью общие папки не поддерживаются. Типичная установка заключается в том, что у вас есть Logstash + Elasticsearch + Kibana в центральном месте (один или несколько серверы) и Filebeat установлены на удаленных машинах, откуда вы собираем данные.

Ссылка

Для одного запущенного экземпляра filebeat вы можете применить различные параметры конфигурации к разным файлам, определив несколько разделов ввода, как показано в примере ниже, проверьте здесь, чтобы узнать больше

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

И у вас может быть один конвейер logstash с оператором if в фильтре

filter {

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

      grok { }

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

      grok { }

    } else {

      grok { }

    }
}

Условие также может быть if "App02" in [tags] или if [source]=="C:\App01_Logs\log.txt", как мы посылаем из filebeat

...