Ответ
При построении pipeline для логов я оценивал несколько инструментов:
-
Fluentd / Fluent Bit: Fluentd стал нашим выбором для централизованного агрегатора благодаря огромному количеству плагинов (input/output/filter) и надёжной буферизации. Его конфигурация на Ruby-подобном DSL гибкая.
<source> @type tail path /var/log/containers/*.log pos_file /var/log/fluentd-containers.log.pos tag kubernetes.* <parse> @type json time_key time time_format %Y-%m-%dT%H:%M:%S.%NZ </parse> </source>Fluent Bit использовали для edge-нод и внутри контейнеров из-за его малого потребления ресурсов.
-
Vector: Выбирали его для высоконагруженных сервисов, где была критична низкая задержка и высокий throughput. Его встроенный язык преобразований VRL (Vector Remap Language) мощный, но имеет свою кривую обучения.
-
Promtail: Использовали исключительно в связке с Grafana Loki для стриминга логов. Он лёгкий и идеально заточен под метки (labels) Loki, что упрощает фильтрацию и запросы.
Выбор зависит от стека: для Elasticsearch — Fluentd или Filebeat, для Loki — Promtail, для кастомных high-load pipeline — Vector.