Filebeat: собрать один вход для нескольких выходов эластичного поиска, каждый со своим различным набором процессоров - PullRequest
0 голосов
/ 13 марта 2020

Я хотел бы настроить filebeat для сбора stdout.log для нескольких выходов эластичного поиска, скажем, строки с x==A будут собраны до elasticsearchA, строки с x==B будут собраны до elasticsearchB, и каждый из них имеет множество разных процессоров.

Возможно ли это? Спасибо.

1 Ответ

1 голос
/ 25 марта 2020

Нет, к сожалению, это невозможно. Да, вы можете определить несколько процессоров для одного и того же входа, каждый из которых будет иметь свое собственное состояние, как вы описали (см. https://www.elastic.co/guide/en/beats/filebeat/current/defining-processors.html).

Проблема заключается в конфигурации хостовasticsearch в файле beat.yml. Каждое событие независимо от конкретного процессора будет распространяться на все хостыasticsearch, поскольку вы не можете определить конкретный хост casticsearch в самих входах / процессорах журнала.

I Подумайте о двух обходных путях, удовлетворяющих вашим требованиям:

  • установите несколько экземпляров / сервисов filebeat, каждый с выделенным входным и процессором. В этом файле filebeat.yml вы указываете только соответствующий хост, на который должны отправляться данные.

  • настройка Logsta sh в качестве промежуточного компонента между filebeat и эластичным поиском. После этого ваш filebeat отправит события в конвейер logsta sh. Там вы можете реализовать фильтр, который проверяет определенные критерии событий (например, теги, которые вы устанавливаете через процессор), а затем распространяете их на правильные хосты эластичного поиска. (Думайте об этом как о структуре if-else)

Я бы предложил вам go для обхода logsta sh, поскольку его легче масштабировать и выполнять будущие требования.

Я надеюсь, что смогу вам помочь.

РЕДАКТИРОВАТЬ:

Я изменил свой ответ, сосредоточившись на нескольких процессорах для одного входа вместо нескольких входов , Идея обходных путей все еще актуальна.

...