Что такое 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.