Кстати, как лучше организовать сбор логов из контенеров в EFK?
Сейчас rsyslog собирает логи драйвером syslog (переопределяется у нужных контейнеров) и кидает в центральный fluentd, который пихает в эластик.
Я думал переделать это, потому что мультилайн ломается, да и в целом кажется мне некрасивым решение. Я думал про несколько вариантов: стандартный драйвер json-log и скармливать файлы из директорий контенеров fluentd/fluent-bit или использовать journald драйвер и кормить из него.
Что лучше рассмотреть или может допилить имеющуюся схему?
Не используй логирование через докер. Во-первых мультилайн у тебя ломается именно там (а, точнее, при передаче через stdio, т.к иной информации о границе лога при передаче через пайп, кроме переноса строки, нет, а это с мультилайном несовместимо), а, во-вторых, оно говно: обрезает длинные строки (что не очень критично, если ты такими вещами не увлекаешься), и, что хуже, выставляет таймстемпы с точностью до секунды (что уже пиздец, т.к. превращает логи в кашу, если они пишутся в хранилище с упорядочеванием по таймстемпу при выводе, типа эластика).
Настрой логирование силами самого приложения (в идеале) или, на худой конец, пусть приложение пишет логи в виде файлов в вольюм, из которого их вычитывает другой контейнер с рсислогом/файлбитом/вектором/etc.