зачем нам filebeat, когда мы можем отправлять логи в Logstatsh

Привет, как новичок в эластичности, у меня есть сомнения, зачем нам нужен fileBeat для отправки журналов в ElasticSearch (ES) или Logstatsh.

Насколько я знал, мы можем напрямую читать логи из файлов и отправлять в logstash, а оттуда в ES. Если первое разрешено, то почему нам нужен FileBeat как промежуточный слой между журналами и logstash.

Что я знал: xyzlogfile--->logstash-file--->ES--->kibana
Зачем нам нужен FileBeat между: xyzlogfile--->fileBeat--->logstash-file--->ES--->kibana


person k.explorer    schedule 19.09.2017    source источник


Ответы (2)


Я предполагаю, что вы говорите о плагине ввода файлов против Filebeat.

Некоторые моменты, на которые следует обратить внимание:

  1. Logstash намного тяжелее с точки зрения использования памяти и процессора, чем Filebeat. Для этого требуется JVM, что может быть хорошо, если вы развертываете программное обеспечение Java, но для многих проектов JVM является ненужным накладным расходом. Filebeat — это просто легкий собственный исполняемый файл.

  2. Возможно, вам вообще не нужен Logstash

  • Если ваши журналы в формате JSON

  • Если вам не нужен какой-либо синтаксический анализ и вы согласны с отметками времени, сгенерированными Filebeat ([EDIT 2021-01-01], у Filebeat есть различные процессоры, он даже может выполнять произвольный скрипт, реализация на чистом ходу ECMASCRIPT 5.1, https://www.elastic.co/guide/en/beats/filebeat/current/processor-script.html)

  • Если у вас есть простой анализ регулярных выражений (например, фильтр grok), вы можете просто использовать Ingest Nodes (https://www.elastic.co/guide/en/elasticsearch/reference/5.0/ingest.html)

  1. Для более сложного анализа/клонирования/группировки событий, вероятно, потребуется Logstash. Просто написать рубиновый фильтр, например, очень просто, и вы можете быстро создать прототип. Для оптимизации сверхвысоких производственных нагрузок вам может понадобиться написать собственный плагин фильтра или, возможно, вы можете попробовать написать свой собственный процессор, который будет использоваться с узлами Ingest (но я еще не пробовал это, я могу сказать вам, что написание пользовательского Фильтр Logstash довольно прост)

  2. Все вышеперечисленные пункты связаны с приемом содержимого файла, но в Logstash есть множество подключаемых модулей ввода/вывода, которые могут вам понадобиться, и они доступны только с Logstash.

Если все ваши файлы расположены на том же узле, что и процесс logstash, то можно использовать плагин ввода файлов (xyzlogfile---›logstash-file---›ES---›kibana).

Однако для большинства развертываний вы хотите собирать данные со многих узлов с различными ролями и программными стеками, развернутыми на них. Вы не хотите развертывать экземпляр Logstash на всех этих узлах, поэтому следует использовать xyzlogfile---›fileBeat---›logstash-beats---›ES---›kibana (или другой вариант — xyzlogfile--- ›fileBeat---›ES---›kibana с узлом Ingest).

person acristu    schedule 20.09.2017

По материалам Mastering Elastic Stack от Packt:

Beats — это доставщики данных, доставляющие данные из различных источников, таких как файлы, потоки данных или журналы, тогда как Logstash — это парсер данных. Хотя Logstash может отправлять данные, это не основное его использование.

Logstash требует много памяти и требует больше ресурсов , тогда как Beats требует меньше ресурсов и потребляет мало памяти.

person Ali Abbasifard    schedule 08.12.2019