Fluent Bit — особенности использования multiline в плагине tail

Thank you for reading this post, don't forget to subscribe!

Input plugin tail име­ет воз­мож­ность обра­ба­ты­вать мно­го­строч­ные лог фай­лы. Доста­точ­но создать PARSER, при помо­щи кото­ро­го мож­но опре­де­лить первую стро­ку тако­го сообщения

 

долж­но выгля­деть как то так:

Ока­за­лось, что всё не так про­сто. Fluent bit нахо­дит первую стро­ку, раз­би­ра­ет её, фор­ми­ру­ет теги. Вро­де всё нормально.

Но осталь­ные стро­ки он тупо допи­сы­ва­ет к послед­не­му тегу регу­ляр­но­го выра­же­ния. И вме­сто того, что бы поме­стить их (как я ожи­дал) в тег message, он добав­ля­ет их к тегу process.

Поэто­му, после обра­бот­ки при­хо­дит­ся «терять» теги time, loglevel и process исполь­зуя сле­ду­ю­щее выра­же­ние вме­сто первого:

Осталь­ные стро­ки мно­го­строч­но­го лога будут добав­лять­ся к тегу message, но он не будет содер­жать вре­мя, loglevel и процесс.

Ито­го, пер­вое регу­ляр­ное выра­же­ние отлич­но рабо­та­ет с одно­строч­ны­ми лога­ми, но не будет рабо­тать с мно­го­строч­ны­ми. Вот такая фича.