جمع آوری لاگ با فلوینت بیت (Fluent-‌Bit)

در دنیای امروز، جمع‌آوری و تحلیل داده‌ها به یک نیاز اساسی برای کسب‌وکارها تبدیل شده است. داده‌های تلمتری، که شامل اطلاعاتی از عملکرد و وضعیت سیستم‌ها هستند، نقش مهمی در نظارت و بهینه‌سازی فرآیندها ایفا می‌کنند. اما چگونه می‌توان این داده‌ها را به صورت کارآمد و بهینه جمع‌آوری و پردازش کرد؟ اینجاست که ابزارهایی مانند فلوینت بیت وارد میدان می‌شوند.

معرفی فلوینت بیت (Fluent Bit)

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


ویژگی‌های کلیدی

  1. سبک و کم‌مصرف
    • حافظه مصرفی کمتر از 650KB
    • نوشته شده به زبان C
    • بدون وابستگی خارجی
    • مناسب برای محیط‌های IoT و embedded
  2. قابلیت اطمینان بالا
    • پشتیبانی از مکانیزم‌های بافرینگ
    • قابلیت ریکاوری در صورت قطعی سیستم
    • پشتیبانی از TLS/SSL برای ارتباطات امن
  3. انعطاف‌پذیری
    • پشتیبانی از بیش از 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:

روی ابونتو و دبین

# اضافه کردن کلید GPG
Curl https://packages.fluentbit.io/fluentbit.key | gpg --dearmor > /usr/share/keyrings/fluentbit-keyring.gpg
# اضافه کردن مخزن
echo &quotdeb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/debian/$(lsb_release -cs) $(lsb_release -cs) main&quot >> /etc/apt/sources.list.d/fluent-bit.list
# به‌روزرسانی و نصب
sudo apt-get update
sudo apt-get install fluent-bit

2- نصب در 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:latest

3-با استفاده از داکر کامپوز:

version: '3'
 Services:
  Fluent-bit:
  image: fluent/fluent-bit:latest
  Volumes:
    - ./config:/fluent-bit/etc/
    - ./logs:/var/log
  ports: - &quot24224:24224&quot
  environment: - FLB_LOG_LEVEL=info

4-با استفاده از کوبرنتیز:

با استفاد از Helm

# اضافه کردن Helm repository
helm repo add fluent https://fluent.github.io/helm-charts
# به‌روزرسانی repository
helm 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

نیازمندی در ازکی:

محصولات ازکی به صورت میکروسرویس‌هایی طراحی شده‌اند که بر روی کوبرنتیز مدیریت می‌شوند. این میکرو سرویس ها با توجه به تعداد بالا و پیچیدگی های محصولی که دارند، دارای لاگ های با اهمیتی هم هستند که توی موارد حساس و پیچیده با حضورشون میتونن خیلی کمک کننده باشند، پس توی یک همکاری تیمی این لاگ ها از فایل به خروجی های کانتینری تبدیل شدند و توسط فلوئنت بیت با حداقل مصرف ریسورس به یک کلاستر الاستیک سرچ منتقل میشوند این دیتا در نهایت میتونه توسط تمام تیم های تکنولوژی به بهره برداری برسه.