Что такое Fluentd?

Fluentd — это open-source унифицированный сборщик логов, который позволяет собирать, обрабатывать и маршрутизировать логи из различных источников. Является частью CNCF и широко используется в Kubernetes экосистеме.

Основные возможности Fluentd

  • Unified Logging Layer — централизованная обработка логов
  • Pluggable Architecture — более 500 плагинов для различных источников
  • JSON Event Logs — структурированный формат логов
  • Minimal Resource Usage — эффективное использование ресурсов
  • Built-in Reliability — буферизация и retry механизмы

Архитектура Fluentd

  • Input Plugins — сбор данных из различных источников
  • Parser Plugins — парсинг неструктурированных логов
  • Filter Plugins — обогащение и трансформация данных
  • Output Plugins — отправка в системы хранения
  • Buffer — временное хранение и батчинг

Когда использовать Fluentd

  • Централизованный сбор логов в Kubernetes
  • Агрегация логов от множества приложений
  • ETL процессы для логов
  • Интеграция с ELK Stack или другими SIEM
  • Обработка логов в реальном времени

Fluentd vs Fluent Bit

  • Fluentd — полнофункциональный агрегатор на Ruby
  • Fluent Bit — легковесный форвардер на C
  • Использование — Fluent Bit для сбора, Fluentd для обработки
  • Ресурсы — Fluent Bit потребляет меньше памяти

Установка Fluentd

 1# Установка через gem
 2gem install fluentd
 3
 4# Установка в Ubuntu/Debian
 5curl -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-focal-td-agent4.sh | sh
 6
 7# Docker контейнер
 8docker run -d -p 24224:24224 -p 24224:24224/udp fluent/fluentd:latest
 9
10# Helm chart для Kubernetes
11helm repo add fluent https://fluent.github.io/helm-charts
12helm install fluentd fluent/fluentd

Пример конфигурации

 1# fluent.conf
 2<source>
 3  @type forward
 4  port 24224
 5  bind 0.0.0.0
 6</source>
 7
 8<filter **>
 9  @type grep
10  <regexp>
11    key level
12    pattern ^(ERROR|WARN)$
13  </regexp>
14</filter>
15
16<match **>
17  @type elasticsearch
18  host elasticsearch.example.com
19  port 9200
20  index_name fluentd
21</match>

FAQ

Подходит ли Fluentd для продакшена?

Да, Fluentd используется в production многими компаниями для обработки миллионов событий в секунду. Имеет встроенные механизмы надежности.

Какие требования к инфраструктуре?

Fluentd написан на Ruby и может потреблять значительно памяти при больших объемах. Для edge случаев рекомендуется Fluent Bit.