Vector уже закрывал тут задачу “собрать логи без JVM Logstash” — бинарник на Rust без прогрева и без гигабайта памяти на старте. Fluent Bit решает ту же задачу с другим допущением: он написан на C и исходно проектировался под embedded- и sidecar-сценарии, где процесс крутится не на отдельной VM с запасом ресурсов, а третьим-четвёртым соседом в поде или на роутере.
Конфиг в классическом формате — секции [INPUT] / [FILTER] / [OUTPUT], то же разделение по ролям, что source/transform/sink у Vector, просто без общего TOML-файла на всё сразу:
[INPUT]
Name tail
Path /var/log/myapp/*.log
Tag myapp.*
Parser json
[FILTER]
Name grep
Match myapp.*
Regex log error
[OUTPUT]
Name stdout
Match myapp.*
tail читает файл с хвоста, Parser json разбирает каждую строку как JSON ещё на входе, grep-фильтр пропускает дальше только записи, где поле log матчится с регэкспом — в данном случае только строки с error.
Fluent Bit изначально рос из Fluentd (тот же проект, тот же CNCF) как облегчённая версия для случаев, где полный Fluentd на Ruby избыточен — поэтому forward-протокол Fluentd он понимает нативно, можно слушать его как промежуточный агрегатор:
[INPUT]
Name forward
Listen 0.0.0.0
Port 24224
[OUTPUT]
Name stdout
Match *
Там, где у Vector троттлинг входящего потока обычно решается через transforms.throttle на VRL, у Fluent Bit это отдельный готовый фильтр:
[FILTER]
Name throttle
Match *
Rate 1000
Window 300
Interval 1s
Это пропустит в среднем 1000 сообщений в секунду, усреднённых за скользящее окно в 300 секунд — всплеск выше лимита не обрубается резко, а сглаживается по окну.
Выбор между Vector и Fluent Bit в большинстве случаев решается средой, а не возможностями: на обычном сервере с запасом памяти Rust-бинарник Vector даёт более выразительный VRL для трансформаций, а на edge-узле, в sidecar-контейнере или там, где важен минимальный footprint — Fluent Bit ближе к тому, для чего его изначально проектировали.
#monitoring #logging
