Fluentd — turli manbalardan log va eventlarni yig‘ish, parse qilish, o‘zgartirish, bufferlash va kerakli storage yoki analytics tizimlariga yuborishga mo‘ljallangan data collector.
Fluentd log manbasi bilan yakuniy backend orasida umumiy routing qatlami vazifasini bajaradi. U pluginlar orqali ko‘p input va output tizimlari bilan ishlaydi.
Event modeli
Fluentd eventni odatda uch qism bilan ifodalaydi:
Misol:
tag: app.api
time: 2026-07-14T09:30:00Z
record:
level: error
message: timeout
Tag routing uchun ishlatiladi.
Input plugin
Input plugin ma’lumotni qabul qiladi.
Manbalar:
Har input parser, port va security sozlamalariga ega.
Source
Configuration’da source blok event qayerdan kelishini belgilaydi.
File tail input:
bilan ishlaydi.
Wildcard yangi log fayllarni topishi mumkin.
Position file
Tail input qaysi offsetgacha o‘qilganini position file’da saqlaydi.
Agent restartdan keyin shu joydan davom etadi.
Position file yo‘qolsa:
mumkin.
Uning storage va permissioni muhim.
Parser
Parser raw textni structured recordga aylantiradi.
Formatlar:
Parse xato bo‘lsa event fallback tag, error stream yoki raw message sifatida saqlanishi mumkin.
Logni butunlay tashlab yuborish diagnostika yo‘qolishiga sabab bo‘ladi.
Filter
Filter recordni outputga yetmasdan o‘zgartiradi.
Vazifalar:
Filter tartibi muhim.
Match
Match blok tag patterniga mos eventlarni outputga yuboradi.
Masalan:
app.**
barcha application taglariga mos kelishi mumkin.
Routing noto‘g‘ri bo‘lsa event kutilmagan backendga ketadi yoki ikki marta yuboriladi.
Output plugin
Output ma’lumotni:
- file;
- object storage;
- Elasticsearch;
- message queue;
- database;
- log platforma;
- boshqa Fluentd
ga yuboradi.
Output delivery kafolati, retry va batching plugin imkoniyatiga bog‘liq.
Buffer
Backend vaqtincha ishlamasa eventlar bufferda saqlanadi.
- memory;
- file
bo‘lishi mumkin.
File buffer process restartdan keyin data’ni saqlaydi.
Memory buffer tez, ammo crashda yo‘qolishi mumkin.
Chunk
Buffer eventlarni chunklarga guruhlaydi.
Chunk key:
bo‘yicha ajratilishi mumkin.
Chunk juda kichik bo‘lsa ko‘p request, juda katta bo‘lsa latency va retry hajmi oshadi.
Flush
Chunk ma’lum shartda outputga yuboriladi:
- vaqt;
- hajm;
- interval;
- shutdown;
- queue holati.
Flush threadlari parallel ishlashi mumkin.
Backend rate limit va ordering talabi hisobga olinadi.
Retry
Output xato qaytarsa Fluentd retry qiladi.
Siyosat:
- exponential backoff;
- maksimal vaqt;
- forever retry;
- secondary output;
- overflow action.
Cheksiz retry buffer diskini to‘ldirishi mumkin.
Overflow
Buffer limiti tugaganda:
- yangi eventni bloklash;
- eng eski chunkni tashlash;
- yangi eventni tashlash;
- xato qaytarish
siyosati qo‘llanadi.
Loss va backpressure talabi oldindan belgilanadi.
Secondary output
Asosiy output uzoq vaqt ishlamasa eventlar secondary storage’ga yozilishi mumkin.
Masalan:
- object storage;
- local file;
- backup endpoint.
Keyinchalik replay jarayoni duplicate ehtimolini boshqaradi.
Forward protocol
Fluentd instance’lar o‘zaro event uzatishi mumkin.
Edge agentlar aggregator clusterga yuboradi.
Transport:
- TLS;
- shared key;
- authentication;
- acknowledgement
bilan himoyalanadi.
Multiline
Application stack trace bir necha qatordan iborat.
Multiline parser event boshlanish patternini topib, keyingi qatorlarni birlashtiradi.
Noto‘g‘ri pattern ko‘p mustaqil request loglarini bitta ulkan eventga birlashtirishi mumkin.
Plugin
Fluentd imkoniyatlari pluginlar orqali kengayadi.
bo‘yicha tekshiriladi.
Har plugin delivery semantikasini bir xil ta’minlamaydi.
Delivery semantikasi
Buffer va acknowledgement orqali at-least-once deliveryga yaqin model qurilishi mumkin.
Bu duplicate event ehtimolini anglatadi.
Backend event ID yoki boshqa deduplication mexanizmiga ega bo‘lishi mumkin.
Resource
Log agentning o‘zi:
- CPU;
- memory;
- disk;
- file descriptor;
- network
ishlatadi.
Juda murakkab regexp va transformatsiya application hostiga yuk beradi.
Og‘ir processing markaziy aggregatorga ko‘chirilishi mumkin.
Aggregator arxitekturasi
Har node’dagi yengil agent eventlarni markaziy Fluentd aggregatorlariga yuborishi mumkin. Agent minimal parsing qiladi, aggregator esa enrichment va ko‘p output routingni bajaradi.
Config reload
Configuration o‘zgarganda process reload yoki restart qiladi. Yangi config syntax va plugin mavjudligi oldindan tekshiriladi. Reload vaqtida buffered eventlar yo‘qolmasligi kerak.
Time parsing
Log timestamp format, locale va time zone bilan parse qilinadi. Parse xato bo‘lsa ingestion vaqti qo‘llanishi mumkin, ammo bu event tartibini noto‘g‘ri ko‘rsatadi.
Record size
Juda katta log event network, buffer va backend limitidan oshishi mumkin. Maksimal record hajmi belgilanadi, stack trace yoki payload kerak bo‘lsa alohida storagega chiqariladi.
Monitoring API
Plugin queue, retry, buffer va event rate haqidagi internal metriclarni taqdim etadi. Agent processi ishlayotgan bo‘lsa ham output bloklangan bo‘lishi mumkin.
Fluent Bit
Resursi cheklangan host va container node’larida yengil collector ishlatilib, eventlar Fluentd yoki backendga yuborilishi mumkin. Parsing va routing vazifalari pipeline bo‘ylab taqsimlanadi.
Bog‘liq tushunchalar
Log collector, Fluent Bit, Input plugin, Output plugin, Filter, Buffer, Chunk, Log routing, Structured logging, Elasticsearch