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

در سال ۲۰۰۹، یه برنامه نویس به اسم جردن سسکین به خاطر مشکلاتی که توی مدیریت و تحلیل دادههای لاگ سیستمها داشت، تصمیم گرفت یه ابزار جدید بسازه. این ابزار باید میتونست دادههای مختلف رو از منابع مختلف جمع آوری و پردازش کنه و به صورت منسجم به یه مقصد مشخص ارسال کنه. نتیجه این تلاش ها، پیدایش LogStash بود. هدف اصلی این ابزار، ساده سازی فرآیند مدیریت دادهها و بهبود عملکرد سیستمهای IT بود.
"داده ها، زبان جهان امروز هستند."
LogStash میتونه دادهها رو از منابع مختلفی مثل فایلهای لاگ، پایگاههای داده، APIها و حتی سرویسهای ابری جمع آوری کنه. بعدش میتونه این دادهها رو به فرمتی قابل استفاده تبدیل کنه و به مقصدی مثل Elasticsearch یا سایر پایگاههای داده ارسال کنه. برخی از کاربردهای اصلی LogStash عبارتند از:
استفاده از LogStash مزایا و معایب خاص خودش رو داره. در این بخش، به بررسی نقاط قوت و ضعف این ابزار میپردازیم تا بتونی تصمیم بهتری در مورد استفاده از اون بگیری. LogStash به خاطر انعطاف پذیری و قابلیتهای پردازش داده، ابزار قدرتمندی است، اما ممکنه مصرف منابع بالایی داشته باشه و پیکربندی اون برای تازه کارها کمی پیچیده به نظر برسه.

برای نصب LogStash، اول باید بسته نرم افزاری اون رو دانلود و نصب کنی. میتونی از دستورات زیر برای نصب استفاده کنی:
sudo apt-get install apt-transport-httpsاین دستور برای نصب ابزار apt-transport-https استفاده میشه که برای دسترسی به مخازن HTTPS نیاز داریم.
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 رو به لیست منابع سیستم اضافه میکنه.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -این دستور کلید GPG مخزن رو دانلود و به سیستم اضافه میکنه تا صحت بستهها تأیید بشه.
sudo apt-get update
sudo apt-get install logstashدستورات بالا برای به روزرسانی لیست بستهها و نصب LogStash استفاده میشه.
بعد از نصب، باید LogStash رو پیکربندی کنی. فایل پیکربندی LogStash به نام logstash.conf شناخته میشه و شامل سه بخش اصلیه:
در ادامه مرحله به مرحله به فرایند پیکربندی LogStash میپردازیم :
input {
  file {
    path => "/var/log/mylog.log"
    start_position => "beginning"
  }
}output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "mylogs-%{+YYYY.MM.dd}"
  }
}
حالا که با مفهوم کلی LogStash آشنا شدیم، بیایید به بررسی اجزای اصلی اون بپردازیم. LogStash از چهار بخش اصلی تشکیل شده: ورودیها (Inputs)، فیلترها (Filters)، و خروجیها (Outputs). هر کدوم از این بخشها نقش مهمی در جمع آوری، پردازش و انتقال دادهها ایفا میکنن. در ادامه به بررسی جزئیات هر یک از این بخشها میپردازیم.
یکی از دلایلی که Logstash خیلی قدرتمنده، تواناییش توی جمع آوری لاگها و رویدادها از منابع مختلفه. با بیش از 50 پلاگین ورودی برای پلتفرم ها، دیتابیسها و برنامههای مختلف، Logstash میتونه برای جمع آوری و پردازش دادهها از این منابع و ارسال اونا به سیستمهای دیگه برای ذخیره سازی و تحلیل تعریف بشه.
ورودیهای رایج شامل فایل، beats، syslog، http، tcp، ssl (پیشنهادی)، udp و stdin هستن، ولی میتونی دادهها رو از خیلی منابع دیگه هم دریافت کنی.
ورودیها نقطه شروع هر پیکربندی هستن. اگه یه ورودی تعریف نکنی، Logstash به صورت خودکار یه ورودی stdin ایجاد میکنه. از اونجا که میتونی ورودیهای متعددی ایجاد کنی، مهمه که اونا رو نوع بندی و تگ گذاری کنی تا بتونی به درستی اونا رو توی فیلترها و خروجیها مدیریت کنی.
این ورودی پیامهای ماشین رو به Logstash ارسال میکنه. پلاگین ورودی Logstash به صورت پیش فرض تنها از rsyslog RFC3164 پشتیبانی میکنه. فیلدهای دیگه ای هم برای پیکربندی پلاگین وجود داره، از جمله فیلد grok_pattern. با یه الگوی grok مناسب، syslog غیر-RFC3164 هم پشتیبانی میشه. از نسخه 3.4.1، فیلدهای grok_pattern و syslog هر دو قابل پیکربندی هستن.
الگوی grok پیش فرض به این شکل است:
"<%{POSINT:priority}>%{SYSLOGLINE}"اگه Logstash فقط یه لوله ساده بین تعدادی ورودی و خروجی بود، میتونستی به راحتی اون رو با سرویس هایی مثل IFTTT یا Zapier جایگزین کنی. خوشبختانه برای ما، اینطور نیست. Logstash از تعدادی پلاگین فیلتر بسیار قدرتمند پشتیبانی میکنه که بهت امکان میده رویدادها رو دستکاری، اندازه گیری و ایجاد کنی. این قدرت فیلترهاست که Logstash رو به ابزاری بسیار انعطاف پذیر و با ارزش تبدیل میکنه.
مثل ورودی ها، Logstash از تعدادی پلاگین خروجی پشتیبانی میکنه که بهت امکان میده داده هات رو به مکان ها، خدمات و فناوریهای مختلف ارسال کنی. میتونی log رو با استفاده از خروجی هایی مثل فایل، CSV و S3 ذخیره کنی، اونا رو به پیام هایی با RabbitMQ و SQS تبدیل کنی، یا به خدمات مختلفی مثل HipChat، PagerDuty یا IRC ارسال کنی. تعداد ترکیبات ورودی و خروجی توی Logstash اون رو به یه مبدل رویداد واقعاً همه کاره تبدیل میکنه.
رویدادهای Logstash میتونن از منابع متعددی بیایند، بنابراین مهمه که بررسی کنی آیا یه رویداد باید توسط یه خروجی خاص پردازش بشه یا نه. اگه یه خروجی تعریف نکنی، Logstash به صورت خودکار یه خروجی stdout ایجاد میکنه.

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 {
  syslog {
    port => 514
  }
}
filter {
  grok {
    match => { "message" => "%{SYSLOGLINE}" }
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "syslogs-%{+YYYY.MM.dd}"
  }
}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]}"
  }
}در دنیای مدیریت دادهها و لاگ ها، ابزارهای متنوعی وجود دارند که هر کدام ویژگیها و کاربردهای خاص خودشان را دارند. در اینجا به بررسی و مقایسه LogStash با چند ابزار مشابه میپردازیم تا ببینیم چه مزایا و معایبی نسبت به هم دارند.
Fluentd یک ابزار سبک و سریع برای جمع آوری لاگ هاست که از منابع متعددی پشتیبانی میکند. برخلاف LogStash، ابزار Fluentd به عنوان یک ابزار کمتر شناخته شده محسوب میشود اما برای کاربرانی که به دنبال یک ابزار ساده و کارآمد هستند، گزینه مناسبی است.
Filebeat یک ابزار سبک و مناسب برای جمع آوری لاگ هاست. این ابزار به راحتی میتواند دادههای لاگها را به LogStash یا Elasticsearch ارسال کند. برخلاف LogStash، ابزار Filebeat قابلیتهای پردازش دادههای محدودی دارد و بیشتر برای جمع آوری لاگها استفاده میشود.
Graylog یک ابزار پیشرفته برای تحلیل و مانیتورینگ لاگ هاست. این ابزار قابلیتهای بسیار زیادی دارد اما راه اندازی و پیکربندی آن پیچیدهتر از LogStash است. Graylog برای کاربرانی که نیاز به تحلیلهای پیشرفته دارند، گزینه مناسبی است.
در جدول زیر، LogStash با ابزارهای مشابه مانند Fluentd، Filebeat و Graylog مقایسه شده است. این جدول به شما کمک میکند تا بفهمید کدام ابزار برای نیازهای خاص شما مناسبتر است و در چه مواردی هر یک از این ابزارها برتری دارند.
| پارامتر | LogStash | Fluentd | Filebeat | Graylog | 
|---|---|---|---|---|
| کاربرد اصلی | جمع آوری، پردازش و انتقال داده ها | جمع آوری و انتقال لاگ ها | جمع آوری لاگ ها | تحلیل و مانیتورینگ لاگ ها | 
| پشتیبانی از منابع | گسترده (بیش از 50 پلاگین) | گسترده (منابع متعدد) | محدود (منابع مشخص) | گسترده (منابع متعدد) | 
| سهولت استفاده | نسبتاً آسان | بسیار آسان | بسیار آسان | پیچیده | 
| انعطاف پذیری | بالا | بالا | محدود | بسیار بالا | 
| مصرف منابع | زیاد | کم | کم | متوسط | 
| قابلیت پردازش داده | بالا | متوسط | محدود | بسیار بالا | 
| مناسب برای | شرکتهای بزرگ و پروژههای پیچیده | پروژههای کوچک و متوسط | جمع آوری لاگ ها | تحلیلهای پیشرفته | 
| توسعه پذیری | بالا (با پلاگین ها) | بالا (با پلاگین ها) | محدود | بسیار بالا (با پلاگین ها) | 
| پشتیبانی و جامعه | بزرگ و فعال | در حال رشد | کوچک | بزرگ و فعال | 

یه ابزار جمع آوری، پردازش و انتقال داده هاست که میتونه دادهها رو از منابع مختلف جمع آوری و به مقاصد مختلف ارسال کنه.
ELK Stack مجموعه ای از سه ابزار Elasticsearch، LogStash و Kibana است که برای جستجو، تحلیل و نمایش دادهها استفاده میشه.
می تونی با استفاده از دستورات نصب، بسته نرم افزاری LogStash رو دانلود و نصب کنی. بعدش با پیکربندی فایلهای مربوطه، میتونی LogStash رو برای جمع آوری و پردازش دادهها آماده کنی.
LogStash میتونه دادهها رو از منابع مختلفی مثل فایلهای لاگ، پایگاههای داده، APIها و سرویسهای ابری جمع آوری کنه.
با استفاده از فایل پیکربندی logstash.conf که شامل بخشهای input، filter و output است، میتونی LogStash رو برای جمع آوری و پردازش دادهها پیکربندی کنی.
"هر داده ای که نمیتونی اون رو تحلیل کنی، فقط یه هزینه اضافیه.
LogStash ابزاری قدرتمند و انعطاف پذیر برای جمع آوری، پردازش و انتقال داده هاست. با استفاده از این ابزار، میتونی دادههای خودت رو به صورت منسجم و قابل تحلیل جمع آوری کنی و به مقصد دلخواه ارسال کنی. با اینکه LogStash ممکنه در ابتدا پیچیده به نظر برسه، اما با کمی تمرین و مطالعه میتونی از تمام قابلیتهای اون بهره مند بشی و عملکرد سیستمهای خودت رو بهبود بدی. استفاده از LogStash در شرکتهای معروف نشون دهنده قدرت و قابلیتهای این ابزار هست و میتونه بهت توی مدیریت بهتر دادهها کمک کنه.
امیدوارم این مقاله تونسته باشه تو رو با LogStash و کاربردهای اون به خوبی آشنا کنه و پاسخگوی سوالاتت باشه. حالا نوبت توئه که این ابزار رو امتحان کنی و از قابلیتهای بی نظیر اون بهره مند بشی.
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد:
 
             
                     
                    