۰ دیدگاه نظر محمدرسول اصغری
LogStash چیست؟ (راهنمای جامع برای نصب، پیکربندی و استفاده)
LogStash چیست؟ (راهنمای جامع برای نصب، پیکربندی و استفاده)

تصور کن توی دنیایی زندگی می‌کنی که پر از داده‌های پراکنده و بی‌نظمه. هر شرکتی کلی اطلاعات از مشتری‌ها، محصولات و تراکنش‌ها داره، ولی هیچ راهی برای هماهنگ کردن این داده‌ها وجود نداره. تیم‌های IT و DevOps همیشه سردرگم و خسته‌ان و هر روز با حجم زیادی از داده‌های نامنظم سروکله می‌زنن. اینجا بود که نیاز به ابزاری مثل LogStash به شدت احساس شد. اگه LogStash نبود، همه ما توی دریای داده‌های بی‌سروته غرق می‌شدیم و تحلیل‌ها و گزارش‌ها هیچ‌وقت درست و حسابی از آب در نمی‌اومد.

LogStash چیست؟

LogStash یکی از ابزارهای خفن مجموعه ELK (Elasticsearch، LogStash، Kibana) است که برای جمع‌آوری، پردازش و انتقال داده‌ها استفاده می‌شه. این ابزار قدرتمند می‌تونه داده‌ها رو از منابع مختلف جمع‌آوری کنه، اونا رو پردازش و فیلتر کنه و در نهایت به مقصدی مثل Elasticsearch ارسال کنه.

تاریخچه و دلیل پیدایش LogStash

در سال ۲۰۰۹، یه برنامه‌نویس به اسم جردن سسکین به خاطر مشکلاتی که توی مدیریت و تحلیل داده‌های لاگ سیستم‌ها داشت، تصمیم گرفت یه ابزار جدید بسازه. این ابزار باید می‌تونست داده‌های مختلف رو از منابع مختلف جمع‌آوری و پردازش کنه و به صورت منسجم به یه مقصد مشخص ارسال کنه. نتیجه این تلاش‌ها، پیدایش LogStash بود. هدف اصلی این ابزار، ساده‌سازی فرآیند مدیریت داده‌ها و بهبود عملکرد سیستم‌های IT بود.

"داده‌ها، زبان جهان امروز هستند."

کاربردهای LogStash

LogStash می‌تونه داده‌ها رو از منابع مختلفی مثل فایل‌های لاگ، پایگاه‌های داده، APIها و حتی سرویس‌های ابری جمع‌آوری کنه. بعدش می‌تونه این داده‌ها رو به فرمتی قابل استفاده تبدیل کنه و به مقصدی مثل Elasticsearch یا سایر پایگاه‌های داده ارسال کنه. برخی از کاربردهای اصلی LogStash عبارتند از:

  • جمع‌آوری و پردازش داده‌های لاگ: LogStash می‌تونه لاگ‌های سیستم‌های مختلف رو جمع‌آوری و پردازش کنه تا تحلیل و مانیتورینگ اون‌ها راحت‌تر بشه.
  • یکپارچه‌سازی داده‌ها: این ابزار می‌تونه داده‌ها رو از منابع مختلف جمع‌آوری و یکپارچه کنه تا تحلیل‌ها دقیق‌تر و کامل‌تر بشن.
  • انتقال داده‌ها: LogStash می‌تونه داده‌ها رو به سیستم‌های دیگه ارسال کنه، مثلاً به Elasticsearch برای جستجو و تحلیل بیشتر.

ویژگی‌های اصلی LogStash

  • انعطاف‌پذیری بالا: LogStash قادره با استفاده از پلاگین‌های مختلف، داده‌ها رو از منابع متنوع جمع‌آوری و پردازش کنه.
  • پشتیبانی از فرمت‌های مختلف داده: این ابزار می‌تونه با فرمت‌های مختلفی از داده‌ها کار کنه، از جمله JSON، XML، CSV و غیره.
  • قابلیت توسعه: با استفاده از پلاگین‌های مختلف، کاربران می‌تونن قابلیت‌های LogStash رو گسترش بدن.

مزایا و معایب LogStash

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

مزایای LogStash

  • انعطاف‌پذیری بالا: LogStash می‌تونه با پلاگین‌های مختلف به راحتی گسترش پیدا کنه.
  • پشتیبانی از منابع و مقاصد مختلف: این ابزار می‌تونه داده‌ها رو از منابع مختلف جمع‌آوری و به مقاصد مختلف ارسال کنه.
  • سهولت در استفاده: با استفاده از فایل‌های پیکربندی ساده، کاربران می‌تونن به راحتی LogStash رو پیکربندی کنن.

معایب LogStash

  • مصرف منابع: LogStash می‌تونه منابع زیادی از سیستم رو مصرف کنه، به ویژه زمانی که حجم داده‌ها زیاد باشه.
  • پیچیدگی در پیکربندی: برای کاربران تازه‌کار، پیکربندی LogStash ممکنه کمی پیچیده باشه.

نصب و راه‌اندازی LogStash

برای نصب LogStash، اول باید بسته نرم‌افزاری اون رو دانلود و نصب کنی. می‌تونی از دستورات زیر برای نصب استفاده کنی:

اضافه کردن مخزن LogStash

sudo apt-get install apt-transport-https

این دستور برای نصب ابزار apt-transport-https استفاده می‌شه که برای دسترسی به مخازن HTTPS نیاز داریم.

افزودن مخزن LogStash به منابع سیستم

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

این دستور مخزن LogStash رو به لیست منابع سیستم اضافه می‌کنه.

افزودن کلید GPG مخزن

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

این دستور کلید GPG مخزن رو دانلود و به سیستم اضافه می‌کنه تا صحت بسته‌ها تأیید بشه.

به‌روزرسانی و نصب LogStash

sudo apt-get update
sudo apt-get install logstash

دستورات بالا برای به‌روزرسانی لیست بسته‌ها و نصب LogStash استفاده می‌شه.

پیکربندی LogStash

بعد از نصب، باید LogStash رو پیکربندی کنی. فایل پیکربندی LogStash به نام logstash.conf شناخته می‌شه و شامل سه بخش اصلیه:

  • input: توی این بخش، منابع داده‌هایی که LogStash باید جمع‌آوری کنه رو مشخص می‌کنی.
  • filter: توی این بخش، پردازش‌هایی که باید روی داده‌ها انجام بشه رو تعریف می‌کنی.
  • output: توی این بخش، مقصد نهایی داده‌ها رو مشخص می‌کنی.

در ادامه مرحله به مرحله به فرایند پیکربندی LogStash میپردازیم :

بخش ورودی (input)

input {
  file {
    path => "/var/log/mylog.log"
    start_position => "beginning"
  }
}
  • input { file { ... } }: این بخش مشخص می‌کنه که ورودی از یه فایل خواهد بود.
  • path => "/var/log/mylog.log": مسیر فایل لاگی که باید خونده بشه.
  • start_position => "beginning": مشخص می‌کنه که خوندن از ابتدای فایل شروع بشه.

بخش فیلتر (filter)

  • filter { grok { ... } }: این بخش برای پردازش و تجزیه داده‌ها استفاده می‌شه.
  • match => { "message" => "%{COMBINEDAPACHELOG}" }: الگوی grok برای تطبیق و تجزیه لاگ‌های آپاچی.

بخش خروجی (output)

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "mylogs-%{+YYYY.MM.dd}"
  }
}
  • output { elasticsearch { ... } }: این بخش برای ارسال داده‌ها به Elasticsearch استفاده می‌شه.
  • hosts => ["localhost:9200"]: مشخص می‌کنه که داده‌ها به کلاستر Elasticsearch روی localhost ارسال بشن.
  • index => "mylogs-%{+YYYY.MM.dd}": نام ایندکس توی Elasticsearch که داده‌ها توی اون ذخیره خواهند شد.

اجزای اصلی LogStash

حالا که با مفهوم کلی LogStash آشنا شدیم، بیایید به بررسی اجزای اصلی اون بپردازیم. LogStash از چهار بخش اصلی تشکیل شده: ورودی‌ها (Inputs)، فیلترها (Filters)، و خروجی‌ها (Outputs). هر کدوم از این بخش‌ها نقش مهمی در جمع‌آوری، پردازش و انتقال داده‌ها ایفا می‌کنن. در ادامه به بررسی جزئیات هر یک از این بخش‌ها می‌پردازیم.

Logstash Inputs

یکی از دلایلی که Logstash خیلی قدرتمنده، تواناییش توی جمع‌آوری لاگ‌ها و رویدادها از منابع مختلفه. با بیش از 50 پلاگین ورودی برای پلتفرم‌ها، دیتابیس‌ها و برنامه‌های مختلف، Logstash می‌تونه برای جمع‌آوری و پردازش داده‌ها از این منابع و ارسال اونا به سیستم‌های دیگه برای ذخیره‌سازی و تحلیل تعریف بشه.

ورودی‌های رایج شامل فایل، beats، syslog، http، tcp، ssl (پیشنهادی)، udp و stdin هستن، ولی می‌تونی داده‌ها رو از خیلی منابع دیگه هم دریافت کنی.

ورودی‌ها نقطه شروع هر پیکربندی هستن. اگه یه ورودی تعریف نکنی، Logstash به صورت خودکار یه ورودی stdin ایجاد می‌کنه. از اونجا که می‌تونی ورودی‌های متعددی ایجاد کنی، مهمه که اونا رو نوع‌بندی و تگ‌گذاری کنی تا بتونی به درستی اونا رو توی فیلترها و خروجی‌ها مدیریت کنی.

Logstash Syslog Input

این ورودی پیام‌های ماشین رو به Logstash ارسال می‌کنه. پلاگین ورودی Logstash به صورت پیش‌فرض تنها از rsyslog RFC3164 پشتیبانی می‌کنه. فیلدهای دیگه‌ای هم برای پیکربندی پلاگین وجود داره، از جمله فیلد grok_pattern. با یه الگوی grok مناسب، syslog غیر-RFC3164 هم پشتیبانی می‌شه. از نسخه 3.4.1، فیلدهای grok_pattern و syslog هر دو قابل پیکربندی هستن.

الگوی grok پیش‌فرض به این شکل است:

"<%{POSINT:priority}>%{SYSLOGLINE}"

Logstash Filters

اگه Logstash فقط یه لوله ساده بین تعدادی ورودی و خروجی بود، می‌تونستی به راحتی اون رو با سرویس‌هایی مثل IFTTT یا Zapier جایگزین کنی. خوشبختانه برای ما، اینطور نیست. Logstash از تعدادی پلاگین فیلتر بسیار قدرتمند پشتیبانی می‌کنه که بهت امکان می‌ده رویدادها رو دستکاری، اندازه‌گیری و ایجاد کنی. این قدرت فیلترهاست که Logstash رو به ابزاری بسیار انعطاف‌پذیر و با ارزش تبدیل می‌کنه.

Logstash Outputs

مثل ورودی‌ها، Logstash از تعدادی پلاگین خروجی پشتیبانی می‌کنه که بهت امکان می‌ده داده‌هات رو به مکان‌ها، خدمات و فناوری‌های مختلف ارسال کنی. می‌تونی log رو با استفاده از خروجی‌هایی مثل فایل، CSV و S3 ذخیره کنی، اونا رو به پیام‌هایی با RabbitMQ و SQS تبدیل کنی، یا به خدمات مختلفی مثل HipChat، PagerDuty یا IRC ارسال کنی. تعداد ترکیبات ورودی و خروجی توی Logstash اون رو به یه مبدل رویداد واقعاً همه‌کاره تبدیل می‌کنه.

رویدادهای Logstash می‌تونن از منابع متعددی بیایند، بنابراین مهمه که بررسی کنی آیا یه رویداد باید توسط یه خروجی خاص پردازش بشه یا نه. اگه یه خروجی تعریف نکنی، Logstash به صورت خودکار یه خروجی stdout ایجاد می‌کنه.

جمع‌آوری لاگ‌های Apache با LogStash

input {
  file {
    path => "/var/log/apache2/access.log"
    start_position => "beginning"
  }
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "apache-logs-%{+YYYY.MM.dd}"
  }
}
  • بخش ورودی (input):
    • input { file { ... } }: مشخص می‌کنه که ورودی از یه فایل خواهد بود.
    • path => "/var/log/apache2/access.log": مسیر فایل لاگ آپاچی که باید خونده بشه.
    • start_position => "beginning": مشخص می‌کنه که خوندن از ابتدای فایل شروع بشه.
  • بخش فیلتر (filter):
    • filter { grok { ... } }: برای پردازش و تجزیه داده‌ها استفاده می‌شه.
    • match => { "message" => "%{COMBINEDAPACHELOG}" }: الگوی grok برای تطبیق و تجزیه لاگ‌های آپاچی.
  • بخش خروجی (output):
    • output { elasticsearch { ... } }: برای ارسال داده‌ها به Elasticsearch استفاده می‌شه.
    • hosts => ["localhost:9200"]: مشخص می‌کنه که داده‌ها به کلاستر Elasticsearch روی localhost ارسال بشن.
    • index => "apache-logs-%{+YYYY.MM.dd}": نام ایندکس توی Elasticsearch که داده‌ها توی اون ذخیره خواهند شد.

جمع‌آوری لاگ‌های سیستم با LogStash

input {
  syslog {
    port => 514
  }
}
filter {
  grok {
    match => { "message" => "%{SYSLOGLINE}" }
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "syslogs-%{+YYYY.MM.dd}"
  }
}
  • بخش ورودی (input):
    • input { syslog { ... } }: مشخص می‌کنه که ورودی از syslog خواهد بود.
    • port => 514: مشخص می‌کنه که syslog از پورت 514 خونده بشه.
  • بخش فیلتر (filter):
    • filter { grok { ... } }: برای پردازش و تجزیه داده‌ها استفاده می‌شه.
    • match => { "message" => "%{SYSLOGLINE}" }: الگوی grok برای تطبیق و تجزیه لاگ‌های syslog.
  • بخش خروجی (output):
    • output { elasticsearch { ... } }: برای ارسال داده‌ها به Elasticsearch استفاده می‌شه.
    • hosts => ["localhost:9200"]: مشخص می‌کنه که داده‌ها به کلاستر Elasticsearch روی localhost ارسال بشن.
    • index => "syslogs-%{+YYYY.MM.dd}": نام ایندکس توی Elasticsearch که داده‌ها توی اون ذخیره خواهند شد.

جمع‌آوری داده‌ها از API با LogStash

input {
  http_poller {
    urls => {
      myapi => "http://api.example.com/data"
    }
    request_timeout => 60
    schedule => { every => "5m" }
    codec => "json"
  }
}
filter {
  mutate {
    add_field => { "[@metadata][index]" => "api-data-%{+YYYY.MM.dd}" }
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "%{[@metadata][index]}"
  }
}
  • بخش ورودی (input):
    • input { http_poller { ... } }: مشخص می‌کنه که ورودی از یه API خواهد بود.
    • urls => { myapi => "http://api.example.com/data" }: URL مربوط به API که داده‌ها از اون جمع‌آوری می‌شه.
    • request_timeout => 60: زمان انتظار برای درخواست‌ها (60 ثانیه).
    • schedule => { every => "5m" }: زمان‌بندی برای درخواست‌ها (هر 5 دقیقه).
    • codec => "json": نوع کدک برای پردازش داده‌ها (در اینجا JSON).
  • بخش فیلتر (filter):
    • filter { mutate { ... } }: برای تغییر و افزودن فیلدها به داده‌ها استفاده می‌شه.
    • add_field => { "[@metadata][index]" => "api-data-%{+YYYY.MM.dd}" }: افزودن فیلد index به داده‌ها با نام api-data و تاریخ روز.
  • بخش خروجی (output):
    • output { elasticsearch { ... } }: برای ارسال داده‌ها به Elasticsearch استفاده می‌شه.
    • hosts => ["localhost:9200"]: مشخص می‌کنه که داده‌ها به کلاستر Elasticsearch روی localhost ارسال بشن.
    • index => "%{[@metadata][index]}": نام ایندکس توی Elasticsearch که داده‌ها توی اون ذخیره خواهند شد، بر اساس فیلد [@metadata][index].

مقایسه LogStash با ابزارهای مشابه

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

LogStash در مقابل Fluentd

Fluentd یک ابزار سبک و سریع برای جمع‌آوری لاگ‌هاست که از منابع متعددی پشتیبانی می‌کند. برخلاف LogStash، ابزار Fluentd به عنوان یک ابزار کمتر شناخته‌شده محسوب می‌شود اما برای کاربرانی که به دنبال یک ابزار ساده و کارآمد هستند، گزینه مناسبی است.

LogStash در مقابل Filebeat

Filebeat یک ابزار سبک و مناسب برای جمع‌آوری لاگ‌هاست. این ابزار به راحتی می‌تواند داده‌های لاگ‌ها را به LogStash یا Elasticsearch ارسال کند. برخلاف LogStash، ابزار Filebeat قابلیت‌های پردازش داده‌های محدودی دارد و بیشتر برای جمع‌آوری لاگ‌ها استفاده می‌شود.

LogStash در مقابل Graylog

Graylog یک ابزار پیشرفته برای تحلیل و مانیتورینگ لاگ‌هاست. این ابزار قابلیت‌های بسیار زیادی دارد اما راه‌اندازی و پیکربندی آن پیچیده‌تر از LogStash است. Graylog برای کاربرانی که نیاز به تحلیل‌های پیشرفته دارند، گزینه مناسبی است.

جدول مقایسه LogStash با ابزارهای مشابه

در جدول زیر، LogStash با ابزارهای مشابه مانند Fluentd، Filebeat و Graylog مقایسه شده است. این جدول به شما کمک می‌کند تا بفهمید کدام ابزار برای نیازهای خاص شما مناسب‌تر است و در چه مواردی هر یک از این ابزارها برتری دارند.

پارامتر

LogStash

Fluentd

Filebeat

Graylog

کاربرد اصلی

جمع‌آوری، پردازش و انتقال داده‌ها

جمع‌آوری و انتقال لاگ‌ها

جمع‌آوری لاگ‌ها

تحلیل و مانیتورینگ لاگ‌ها

پشتیبانی از منابع

گسترده (بیش از 50 پلاگین)

گسترده (منابع متعدد)

محدود (منابع مشخص)

گسترده (منابع متعدد)

سهولت استفاده

نسبتاً آسان

بسیار آسان

بسیار آسان

پیچیده

انعطاف‌پذیری

بالا

بالا

محدود

بسیار بالا

مصرف منابع

زیاد

کم

کم

متوسط

قابلیت پردازش داده

بالا

متوسط

محدود

بسیار بالا

مناسب برای

شرکت‌های بزرگ و پروژه‌های پیچیده

پروژه‌های کوچک و متوسط

جمع‌آوری لاگ‌ها

تحلیل‌های پیشرفته

توسعه‌پذیری

بالا (با پلاگین‌ها)

بالا (با پلاگین‌ها)

محدود

بسیار بالا (با پلاگین‌ها)

پشتیبانی و جامعه

بزرگ و فعال

در حال رشد

کوچک

بزرگ و فعال

سوالات متداول

1. LogStash چیه؟

یه ابزار جمع‌آوری، پردازش و انتقال داده‌هاست که می‌تونه داده‌ها رو از منابع مختلف جمع‌آوری و به مقاصد مختلف ارسال کنه.

2. ELK Stack چیه؟

 ELK Stack مجموعه‌ای از سه ابزار Elasticsearch، LogStash و Kibana است که برای جستجو، تحلیل و نمایش داده‌ها استفاده می‌شه.

3. چطوری می‌تونم LogStash رو نصب کنم؟

 می‌تونی با استفاده از دستورات نصب، بسته نرم‌افزاری LogStash رو دانلود و نصب کنی. بعدش با پیکربندی فایل‌های مربوطه، می‌تونی LogStash رو برای جمع‌آوری و پردازش داده‌ها آماده کنی.

4. چه منابعی توسط LogStash پشتیبانی می‌شن؟

 LogStash می‌تونه داده‌ها رو از منابع مختلفی مثل فایل‌های لاگ، پایگاه‌های داده، APIها و سرویس‌های ابری جمع‌آوری کنه.

5. چطوری می‌تونم LogStash رو پیکربندی کنم؟

با استفاده از فایل پیکربندی logstash.conf که شامل بخش‌های input، filter و output است، می‌تونی LogStash رو برای جمع‌آوری و پردازش داده‌ها پیکربندی کنی.

"هر داده‌ای که نمی‌تونی اون رو تحلیل کنی، فقط یه هزینه اضافیه.

جمع‌بندی

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

امیدوارم این مقاله تونسته باشه تو رو با LogStash و کاربردهای اون به خوبی آشنا کنه و پاسخگوی سوالاتت باشه. حالا نوبت توئه که این ابزار رو امتحان کنی و از قابلیت‌های بی‌نظیر اون بهره‌مند بشی.

۰ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
  • LogStash چیست؟
  • تاریخچه و دلیل پیدایش LogStash
  • کاربردهای LogStash
  • ویژگی‌های اصلی LogStash
  • مزایا و معایب LogStash
  • نصب و راه‌اندازی LogStash
  • پیکربندی LogStash
  • اجزای اصلی LogStash
  • جمع‌آوری لاگ‌های Apache با LogStash
  • جمع‌آوری لاگ‌های سیستم با LogStash
  • جمع‌آوری داده‌ها از API با LogStash
  • مقایسه LogStash با ابزارهای مشابه
  • سوالات متداول
  • جمع‌بندی
اشتراک گذاری مقاله در :