آموزش نصب و پیکربندی Logstash در ELK

Logstash حرف “L” در ELK Stack است، محبوبترین پلتفرم آنالیز لاگ در دنیا. Logstash وظیفه جمعآوری داده از منابع مختلف، پردازش آن و ارسال آن به پایپ لاین را بر عهده دارد و مقصد نهایی این دادهها معمولا Elasticsearch برای فهرستبندی مستقیم است.
پیش از این در رابطه با آموزش نصب الستیک سرچ در مقالهای جداگانه صحبت نمودیم. این آموزش Logstash، یک دوره فشرده برای شروع کار با Logstash را به شما ارائه میدهد و دستورالعملهایی برای نصب و پیکربندی Logstash را در اختیارتان قرار میدهد.
Logstash میتواند با استفاده از پلاگینهای ورودی (Input Plugins) تقریباً از هر منبعی داده استخراج کند، با استفاده از پلاگینهای فیلتر (Filter Plugins) انواع مختلفی از تغییرات و بهبودها را روی داده اعمال کند و با استفاده از پلاگینهای خروجی (Output Plugins) دادهها را به تعداد زیادی از مقصدها ارسال کند. بنابراین، نقش Logstash در این مجموعه حیاتی است – این نرم افزار به شما امکان میدهد دادههای خود را فیلتر، مرتبسازی و شکلدهی کنید تا کار با آنها آسانتر شود.
فهرست مطالب
پیش از شروع کار با Logstash …..
علیرغم محبوبیت Logstash، این نرم افزار معایب جدیای هم دارد – که مهمترین آنها نیاز به منابع سختافزاری بسیار زیاد و همچنین تمایل به ایجاد خطا است. اگر به دنبال این هستید که از نصب Logstash فعلی خود بهترین بهره را ببرید، به خواندن ادامه دهید! به هر حال، موضوع این بلاگ Logstash است. پس بیایید شروع کنیم.
نصب Logstash
روشهای مختلفی برای نصب Logstash بسته به سیستم عامل و محیط شما وجود دارد. ما Logstash را روی یک ماشین Ubuntu 24.04 با استفاده از apt نصب خواهیم کرد.
پیش نیازها
قبل از نصب Logstash، مطمئن شوید که جاوا ۸ یا جاوا ۱۱ نصب شده باشد.
برای نصب جاوا از دستور زیر استفاده کنید:
#apt-get update
#apt-get install default-jre
اضافه کردن کلید امضای Elastic
ابتدا باید کلید امضای الستیک را اضافه کنید تا بسته دانلود شده قابل تأیید باشد (اگر قبلاً بستههایی از الستیک نصب کردهاید، این مرحله را رد کنید):
#wget -qO – https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –
اضافه کردن مخزن
گام بعدی اضافه کردن تعریف مخزن به سیستم شماست:
#echo “deb https://artifacts.elastic.co/packages/7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
نصب Logstash
در نهایت، مخزنهای خود را بهروزرسانی کرده و Logstash را نصب کنید:
sudo apt-get update
sudo apt-get install logstash
پیکربندی Logstash
پیکربندی Logstash یکی از بزرگترین موانعی است که کاربران هنگام کار با Logstash با آن روبرو می شوند. در حالی که اخیراً در مدیریت و پیکربندی pipelines پیشرفتهایی حاصل شده است، این کار همچنان میتواند برای مبتدیان چالشبرانگیز باشد.
ما با بررسی سه بخش اصلی پیکربندی در یک فایل پیکربندی Logstash شروع میکنیم که هر کدام وظایف مختلفی دارند و از پلاگینهای Logstash متفاوتی استفاده میکنند.
ورودیهای Logstash (Logstash Inputs)
یکی از ویژگیهای قدرتمند Logstash توانایی آن در جمعآوری لاگها و رویدادها از منابع مختلف است. Logstash با استفاده از بیش از ۵۰ پلاگین ورودی (Input Plugins) برای پلتفرمهای مختلف، پایگاههای داده و برنامهها، میتواند برای جمعآوری و پردازش دادهها از این منابع و ارسال آنها به سایر سیستمها برای ذخیرهسازی و تجزیه و تحلیل تعریف شود.
رایجترین ورودیهای استفادهشده file، beats، syslog، http، tcp، ssl، udp و stdin هستند، اما شما میتوانید دادهها را از منابع بسیار دیگری نیز دریافت کنید.
ورودیها نقطه شروع هر پیکربندی هستند. اگر ورودیای تعریف نکنید، Logstash به طور خودکار یک ورودی stdin ایجاد میکند. از آنجایی که میتوانید ورودیهای متعددی ایجاد کنید، مهم است که آنها را تایپ و تگ (tag) کنید تا بتوانید آنها را به درستی در فیلترها و خروجیها کنترل کنید.
ورودی Syslog در Logstash
این ورودی پیامهای ماشین را به Logstash ارسال میکند. پلاگین ورودی Logstash به طور پیش فرض فقط از rsyslog RFC3164 پشتیبانی میکند. فیلدهای دیگری برای پیکربندی پلاگین وجود دارد، از جمله فیلد grok_pattern. توجه داشته باشید که با یک الگوی grok مناسب، میتوان از syslog غیر RFC3164 نیز پشتیبانی کرد. بنابراین، از نسخه ۳.۴.۱ به بعد، هر دو فیلد grok_pattern و syslog قابل پیکربندی هستند.
الگوی پیش فرض grok عبارت است از:
“<%{POSINT:priority}>%{SYSLOGLINE}”
سایر فیلدها شامل رشتههای timezone (منطقه زمانی)، locale (محل)، و host (میزبان)؛ آرایههای severity_labels و facility_labels؛ و مقادیر بول (true/false) برای proxy_protocol (پروتکل پروکسی) و use_labels (استفاده از برچسبها). همچنین، فیلد port یک عدد است.
تمام پلاگینهای ورودی Logstash از پیکربندیهای اختیاری زیر پشتیبانی میکنند: tags (برچسبها)، type (نوع)، id (شناسه)، enable_metric (فعال کردن معیار)، codec (کدک)، و add_field (اضافه کردن فیلد).
فیلترهای Logstash
اگر Logstash فقط یک پایپ لاین بین تعدادی ورودی و خروجی بود، به راحتی میتوانستید آن را با سرویسی مانند IFTTT یا Zapier جایگزین کنید. خوشبختانه برای ما، اینطور نیست. Logstash از تعدادی پلاگین فیلتر بسیار قدرتمند پشتیبانی میکند که به شما امکان میدهد رویدادها را دستکاری، اندازهگیری و ایجاد کنید. قدرت همین فیلترهاست که Logstash را به ابزاری بسیار انعطافپذیر و با ارزش تبدیل میکند.
خروجیهای Logstash
مشابه ورودیها، Logstash از تعدادی پلاگین خروجی پشتیبانی میکند که به شما امکان میدهد دادههای خود را به مکانها، سرویسها و فناوریهای مختلفی ارسال کنید. میتوانید رویدادها را با استفاده از خروجیهایی مانند File، CSV و S3 ذخیره کنید، آنها را با RabbitMQ و SQS به پیام تبدیل کنید، یا آنها را به سرویسهای مختلفی مانند HipChat، PagerDuty یا IRC ارسال کنید. تعداد ترکیبات ورودی و خروجی در Logstash آن را به یک ابزار تبدیل کننده رویداد واقعاً همه کاره تبدیل میکند.
رویدادهای Logstash میتوانند از منابع مختلفی نشأت بگیرند، بنابراین مهم است که بررسی کنید رویدادی باید توسط یک خروجی خاص پردازش شود یا خیر. اگر خروجیای تعریف نکنید، Logstash به طور خودکار یک خروجی stdout ایجاد میکند (خروجی بر روی صفحه نمایش).
نمونههای پیکربندی Logstash
Logstash یک زبان ساده برای پیکربندی (DSL) دارد که به شما امکان میدهد ورودیها، خروجیها و فیلترهای توضیح داده شده در بالا را به همراه گزینههای خاص آنها مشخص کنید. ترتیب اهمیت دارد، به خصوص در مورد فیلترها و خروجیها، زیرا پیکربندی اساساً به کد تبدیل شده و سپس اجرا میشود. هنگام نوشتن پیکربندیهای خود این نکته را در نظر داشته باشید و سعی کنید اشکالزدایی کنید.
ساختار
پیکربندیهای شما به طور کلی سه بخش خواهند داشت: ورودیها، خروجیها و فیلترها. شما میتوانید نمونههای متعددی از هر یک از این موارد داشته باشید، به این معنی که میتوانید پلاگینهای مرتبط را در یک فایل پیکربندی به جای گروه بندی آنها بر اساس نوع، با هم گروه کنید.
فایلهای پیکربندی Logstash به طور کلی به صورت زیر ساخته میشوند:
/etc/logstash/conf.d/
– apache.conf
– haproxy.conf
– syslog.conf
بنابراین، میتوانید برای هر یک از عملکردها یا ادغامهایی که میخواهید Logstash انجام دهد، یک فایل پیکربندی داشته باشید. هر یک از این فایلها ورودیها، فیلترها و خروجیهای لازم برای انجام آن عملکرد را شامل میشود.
مثال: File → Logstash → Elasticsearch
apache.conf
input {
file {
path => “/var/log/apache2/access.log”
start_position => “beginning”
sincedb_path => “/dev/null”
}
}
filter {
grok {
match => { “message” => “%{COMBINEDAPACHELOG}” }
}
date {
match => [ “timestamp” , “dd/MMM/yyyy:HH:mm:ss Z” ] }
geoip {
source => “clientip”
}
}
output {
elasticsearch {
hosts => [“localhost:9200”] }
}
بخش ورودی از پلاگین ورودی file برای گفتن به Logstash برای کشیدن لاگها از لاگ دسترسی آپاچی استفاده میکند.
در بخش فیلتر، موارد زیر را اعمال میکنیم:
الف) یک فیلتر grok که رشته لاگ را تجزیه میکند و رویداد را با اطلاعات مرتبط از لاگهای آپاچی پر میکند.
ب) یک فیلتر date برای تعریف فیلد timestamp
پ) یک فیلتر geoip برای غنیسازی فیلد clientip با دادههای جغرافیایی
نکته: پیکربندی فیلتر grok کار سادهای نیست. توصیه میکنیم قبل از راهاندازی Logstash با استفاده از اشکالزدای grok، فیلترهای خود را آزمایش کنید.
در نهایت، بخش خروجی که در این مورد برای ارسال داده به یک نمونه محلی Elasticsearch تعریف شده است.
کار با پلاگینهای Logstash
همانطور که متوجه خواهید شد، اکثر موارد استفادهی رایج توسط پلاگینهایی که به صورت پیشفرض همراه با Logstash نصب و فعال شدهاند، پوشش داده میشوند. برای مشاهده لیست پلاگینهای بارگذاریشده، به مسیر نصب Logstash بروید و دستور list را اجرا کنید:
#cd /usr/share/logstash
#bin/logstash-plugin list
نصب سایر پلاگینها به راحتی با دستور زیر انجام میشود:
#bin/logstash-plugin install logstash-output-kafka
بهروزرسانی و حذف پلاگینها و همچنین نصب پلاگین ساختهشده به صورت محلی به همین راحتی انجام میشود.
تنها کاری که باقی مانده این است که دست به کار شوید و Logstash را راهاندازی کنید:
#service logstash start
خطاهای پیکربندی اغلب رخ میدهند، بنابراین استفاده از لاگهای Logstash برای یافتن خطای رخداده میتواند مفید باشد:
#tail -f /var/log/logstash/logstash-plain.log
جمعبندی
Logstash در حال حاضر به طور فزایندهای همراه با جمعآوریکنندههای داده سبکتر به نام Beats مورد استفاده قرار میگیرد. بیتهای مختلف، مانند Filebeat و Metricbeat، به عنوان حملکنندههای سبکی عمل میکنند که انواع مختلف داده را جمعآوری کرده و سپس آنها را برای پردازش پیشرفتهتر به Logstash ارسال میکنند. این روش، نحوه راهاندازی data pipelines با Logstash را تغییر داده و همچنین به کاهش برخی از مشکلات عملکردی که در بالا ذکر شد، کمک کرده است.
این راهنمای شروع به کار، مراحلی را که برای شروع استفاده از Logstash نیاز دارید، در اختیار شما قرار داده است. پس از راهاندازی اولین پایپ لاین، به تدریج با جزئیات استفاده از Logstash آشنا خواهید شد. مدیریت پایپ لاینهای داده چندگانه و پیچیده با Logstash کار سادهای نیست. اسناد را به دقت مطالعه کرده و قبل از اعمال در محیط تولید، در محیط توسعه آزمایش کنید.



