DevOps
جمع آوری لاگ با فلوینت بیت (Fluent-Bit)
در دنیای امروز، جمعآوری و تحلیل دادهها به یک نیاز اساسی برای کسبوکارها تبدیل شده است. دادههای تلمتری، که شامل اطلاعاتی از عملکرد و وضعیت سیستمها هستند، نقش مهمی در نظارت و بهینهسازی فرآیندها ایفا میکنند. اما چگونه میتوان این دادهها را به صورت کارآمد و بهینه جمعآوری و پردازش کرد؟ اینجاست که ابزارهایی مانند فلوینت بیت وارد میدان میشوند.
معرفی فلوینت بیت (Fluent Bit)
فلوینت بیت یک ابزار منبعباز و کارآمد برای جمعآوری، پردازش و ارسال دادههای تلمتری و لاگها از منابع مختلف به مقصدهای متنوع است. این ابزار کوچک و سریع برای مصرف بهینه منابع طراحی شده و میتواند روی دستگاههای مختلف، از IoT تا سرورهای بزرگ، اجرا شود. فلوینت بیت قابلیت یکپارچهسازی با سیستمهای مانیتورینگ و تحلیل مانند Elasticsearch، Prometheus و OpenTelemetry را دارد و توسط ارائهدهندگان بزرگِابری و شرکتهای مختلف مورد استفاده قرار میگیرد. این نرم افزار به طور خاص برای محیطهای کانتینری، ابری و میکروسرویسها مناسب است. رسالت فلوینت بیت در یک جمله خلاصه میشود: جمع آوری لاگ از همه جا، پردازش آن و فرستادن آن به هر سرویس مد نظر.

ویژگیهای کلیدی
- سبک و کممصرف
- حافظه مصرفی کمتر از 650KB
- نوشته شده به زبان C
- بدون وابستگی خارجی
- مناسب برای محیطهای IoT و embedded
- قابلیت اطمینان بالا
- پشتیبانی از مکانیزمهای بافرینگ
- قابلیت ریکاوری در صورت قطعی سیستم
- پشتیبانی از TLS/SSL برای ارتباطات امن
- انعطافپذیری
- پشتیبانی از بیش از 70 پلاگین ورودی و خروجی
- قابلیت فیلترینگ و غنیسازی دادهها
- امکان تعریف روتینگ پیچیده
نیازمندی به فلوینت بیت
در سازمانها، شرکتها و استارتاپها، نظارت بر عملکرد سیستمها و تحلیل دادهها برای بهبود کارایی و کشف مشکلات پیش از وقوع، ضروری است. فلوینت بیت به شما کمک میکند تا دادههای تلمتری و لاگ های تمامی سرویسها را به صورت متمرکز و کارآمد جمعآوری کنید، بدون اینکه بار اضافی بر روی سیستمهای شما ایجاد شود. این ابزار به ویژه برای محیطهای پیچیده و بزرگ، که در آنها حجم عظیمی از دادهها باید به صورت مداوم مانیتور شوند، بسیار مفید است.
معماری فلوینت بیت
Fluent Bit از یک معماری Pipeline-based استفاده میکند که شامل چندین مؤلفه اصلی است :
1- input: (دادهها را از منابع مختلف مانند فایلها، سرورها و سرویسها جمعآوری میکند.)
پشتیبانی از منابع متنوع مانند:
- فایلهای لاگ
- متریکهای سیستمی
- TCP/UDP
- MQTT
- Kubernetes logs
2-Parser
. تبدیل دادههای خام به فرمت ساختاریافته
. پشتیبانی از فرمتهای مختلف:
- JSON
- Regular Expression
- LTSV
- Logfmt
3-Filter (دادههای ورودی را پردازش و تغییر میدهد، مانند افزودن یا حذف فیلدها)
امکانات فیلترینگ:
- Grep
- Record Modifier
- Kubernetes
- Lua Scripts
4-Output
ارسال دادهها به مقصد
پشتیبانی از مقاصد متنوع:
- Elasticsearch
- Prometheus
- InfluxDB
- HTTP endpoints
- (Cloud services (AWS, GCP, Azure
5- TAG
به هر رویدادی که وارد فلوئنت بیت می شود، یک تگ اختصاص داده می شود. این تگ یک رشته داخلی است که در مراحل بعدی توسط روتر برای تصمیم گیری در مورد فاز فیلتر یا خروجی استفاده می شود.
6-Buffer
بافرینگ در Fluent Bit مکانیزمی است که دادهها را قبل از ارسال به مقصد ذخیره میکند. این قابلیت برای اطمینان از عدم از دست رفتن دادهها در شرایط مختلف (مانند قطعی شبکه یا فشار بالا) حیاتی است.
انواع بافرینگ در فلوینت بیت:
- Memory Buffer (بافر حافظه):

- Storage Buffer (بافر ذخیرهسازی)

7-Routing
روتینگ در Fluent Bit مکانیزمی است که تعیین میکند هر داده به کجا باید ارسال شود. این قابلیت امکان ایجاد مسیرهای پیچیده برای دادهها را فراهم میکند.
- روشهای روتینگ:
Tag-based Routing (روتینگ بر اساس تگ):

Multi-Destination Routing (روتینگ چند مقصدی):

نصب fluent-bit:
نصب فلوینت بیت با توجه به کاربرد آن میتواند متفاوت باشد. در زیر روش های مختلف نصب فلوینت بیت به اختصار آمده است.
1-نصب آن روی لینوکس
نصب از طریق Package Manager:
روی ابونتو و دبین
# اضافه کردن کلید GPGCurl https://packages.fluentbit.io/fluentbit.key | gpg --dearmor > /usr/share/keyrings/fluentbit-keyring.gpg# اضافه کردن مخزنecho "deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/debian/$(lsb_release -cs) $(lsb_release -cs) main" >> /etc/apt/sources.list.d/fluent-bit.list# بهروزرسانی و نصبsudo apt-get updatesudo apt-get install fluent-bit2- نصب در Docker
با استفاده از ایمیج رسمی
# دریافت آخرین نسخه
docker pull fluent/fluent-bit:latest# اجرا با تنظیمات پیشفرضdocker run -d --name fluent-bit fluent/fluent-bit:latest# اجرا با فایل کانفیگ سفارشیdocker run -d --name fluent-bit \-v /path/to/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf \fluent/fluent-bit:latest3-با استفاده از داکر کامپوز:
version: '3' Services: Fluent-bit: image: fluent/fluent-bit:latest Volumes: - ./config:/fluent-bit/etc/ - ./logs:/var/log ports: - "24224:24224" environment: - FLB_LOG_LEVEL=info
4-با استفاده از کوبرنتیز:
با استفاد از Helm
# اضافه کردن Helm repositoryhelm repo add fluent https://fluent.github.io/helm-charts# بهروزرسانی repositoryhelm repo update# نصب با تنظیمات پیشفرضhelm install fluent-bit fluent/fluent-bit# نصب با values سفارشیhelm install fluent-bit fluent/fluent-bit -f values.yamlنمونه values.yaml برای helm:
config: inputs: | [INPUT] Name tail Path /var/log/containers/*.log filters: | [FILTER] Name kubernetes Match kube.* outputs: | [OUTPUT] Name es Match kube.* Host elasticsearch-host Port 9200نیازمندی در ازکی:
محصولات ازکی به صورت میکروسرویسهایی طراحی شدهاند که بر روی کوبرنتیز مدیریت میشوند. این میکرو سرویس ها با توجه به تعداد بالا و پیچیدگی های محصولی که دارند، دارای لاگ های با اهمیتی هم هستند که توی موارد حساس و پیچیده با حضورشون میتونن خیلی کمک کننده باشند، پس توی یک همکاری تیمی این لاگ ها از فایل به خروجی های کانتینری تبدیل شدند و توسط فلوئنت بیت با حداقل مصرف ریسورس به یک کلاستر الاستیک سرچ منتقل میشوند این دیتا در نهایت میتونه توسط تمام تیم های تکنولوژی به بهره برداری برسه.
مطلبی دیگر از این انتشارات
نامگذاری مبتنی بر دامنه کانستنتها در جاوااسکریپت
مطلبی دیگر از این انتشارات
یک شرکت بیمه چهجوری استراتژی سرمایه گذاری میچینه؟
مطلبی دیگر از این انتشارات
تجربه من به عنوان Agile Delivery Manager در ازکی