Привет всем, вопрос про Filebeat и Docker контейнеры.
Нужно сделать одну вещь, но пока не понимаю как.
Есть docker и логи контейнеров он пишет в stdout /proc/self/fd/2, а Filebeat должен их читать и отправлять в Logstash.
Я увидел в конфигах Filebeat input для контейнеров, но насколько я понял, это привязано к log-файлам в /var/lib/docker/.../... или Ошибаюсь?
В любом случае, реально ли осуществить подобное, не городя кучу костылей на bash'e передавая pid на stdininput Filebeat'a?
PS. Непонятность в том, что как должен Filebeat обнаружить процесс конкретного контейнера и забрать с него логи (точнее: из конкретного потока конкретного процесса)
Здравствуйте,
не эксперт в Filebeat, но насколько я знаю есть два способа читать логи контейнера:
из stdout. Это способ по умолчанию. Достаточно указать id контейнера.
напрямую из файла. Для этого необходимо указать путь к директории где докер хранит файлы.
UPD.
глянул документацию. Оказывается мои знания устарели. Docker input считается устаревшим начиная с версии 7.2. Новый input - containers. Если я понимаю правильно, то теперь надо указывать не containerId а просто файлы логов. Я уточню с командой которая разрабатывает Filebeat.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.