@EmachinesDIMA
junior DevOps

Как заставить filebeat слушать лишь определённые docker контейнеры?

использую автообнаружение контейнеров:
filebeat.autodiscover:
providers:
- type: docker
labels.dedot: true
hints.enabled: true

фильтр работат если указать параметр
condition.container.labels.collect_logs_with_filebeat: "true"

и добавить метку контейнеру, логи контейнера которого я хочу получать:
labels:
co.elastic.logs/enabled: "true" # for Filebeat
collect_logs_with_filebeat: "true"

——————————————————-
но что делать, если контейнеров сотни и всем метки добавлять не будешь?

Правило:
condition.docker.container.name: "имя контейнера" - не работает.

——————————-
вышеописанное относится к конфигурации filebeat запущенного как локально, так и в контейнере.

Если запускать filebeat в контейнера и определить его в изолированной docker.networks (external) - вместе с контейнером, логи контейнера которого я хочу получать - — он это игнорирует и слушает все контейнеры - хинты же слушают все контейнеры на хосте.

Вот и дилемма - страдать и добавлять всем контейнерам метки "слушать или не слушать" их filebeat'у , или всё же как смочь настроить templates: для фильрации контейнеров.
  • Вопрос задан
  • 695 просмотров
Решения вопроса 1
@EmachinesDIMA Автор вопроса
junior DevOps
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
hints.default_config.enabled: false

ну а отслеживаемому контейнеру добавить
labels:
co.elastic.logs/enabled: "true"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SlavikF
@SlavikF
Я делаю вот так:

filebeat.autodiscover:
  providers:
  - type: docker
    templates:
      - condition:
          contains:
            docker.container.name: "ng-"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы