برای پاسخ به سوال ELK Stack چیست؟ در ابتدا باید با ابزارهای آن آشنا شویم. در دنیای رقابتی امروز شرکتها و سازمانها به سیستمهای نرمافزاری نیاز دارند که بتوانند پاسخگوی حجم زیاد درخواستهای کاربران در کوتاهترین زمان ممکن باشند. عملکرد نامناسب آنها میتواند زیان هنگفتی را به کسبوکارها وارد کند و از کار افتادن سیستمها ممکن است به قیمت نابودی یک کسب و کار تمام شود. در چنین شرایطی اهمیت یک سیستم کارآمد و سریع برای جمع آوری و تحلیل لاگهای سیستم از اهمیتی دوچندان دارد.
معرفی ELK Stack
ELK Stack مجموعهای قدرتمند از ابزارهای Elasticsearch, Logstash, Kibana, Beats است که عموما به نام Elasticsearch شناخته میشوند. ELK stack با کمک این ابزارها امکان جمعآوری لاگ از همه سیستمها، تحلیل لاگها، تسریع عیبیابی و پایش امنیت سیستمها را فراهم میکند. ELK Stack تا ۲۱ ژانویه ۲۰۲۱ با لایسنس آپاچی ارائه میشد ولی بعد از این تاریخ با لایسنس الستیک یا SSPL ارائه میشود که متنباز نیست.
آشنایی با اجزای ELK Stack
تحلیل لاگها در ELK Stack با استفاده از چهار ابزار Elasticsearch, Logstash, Kibana, Beats انجام میشود. این ابزارها با تنظیماتی ساده به خوبی با هم همکاری میکنند تا هدف نهایی سیستم محقق کنند.
در ادامه با اجزای این سیستم آشنا میشویم:
- Beats
Beats بستری برای فرستندههای تک منظوره داده با توانایی ارسال صدها هزار داده در ثانیه است. این فرستندهها برای انواع خاصی از داده توسعه داده میشوند؛ Filebeat, Metricbeat, Packetbeat, Winlogbeat, Auditbeat, Heartbeat, Functionbeat همگی فرستندههای سبکی هستند که از هر کدام برای ارسال یکی از انواع دادهها به Logstash و Elasticsearch استفاده میشود.
- Logstash
Logstash یک پایپ لاین پردازش داده سبک و متنباز است که امکان جمعآوری داده از منابع مختلف، اعمال تغییرات مورد نظر روی دادهها و ارسال آنها به مقصد مورد نظر را برای ما فراهم میکند. این ابزار با توجه به قدرت پردازش دادهها و پلاگینهای متعددی که تا کنون برای آن توسعه یافته است، گزینه مناسبی برای بارگذاری داده در الستیک سرچ در نظر گرفته میشود.
- Elasticsearch
الستیک سرچ یک موتور جستجو و تحلیل توزیع شده است که بر روی نرم افزار متنباز Apache Lucene توسعه پیدا کرده است. پشتیبانی از چندین زبان، پرفورمنس بالا و قابلیت کار با دادههای بدون ساختار، این موتور قدرتمند را به یک گزینه مناسب برای جستجو و تحلیل لاگها تبدیل کرده است.
- Kibana
کیبانا ابزاری برای نمایش دادهها در قالب متن، جدول و نمودار است. قابلیت مانیتور کردن عملکرد سیستم به وسیله جستجو و انواع تحلیلهای آماری روی دادهها و رخدادهای سیستم آن را به ابزاری هوشمند و کارآمد تبدیل کرده است. کارکرد ساده و امکاناتی نظیر هیستوگرام، نمودارهای خطی و دایرهای، نقشههای حرارتی و پشتیبانی جغرافیایی از مزایای شاخص این ابزار است.
معماری Elasticsearch و اجزای اصلی آن
معماری الستیک سرچ مقیاسپذیری و انعطافپذیری را برای کاربران این موتور جستجو فراهم میکند. اجزای اصلی الستیک سرچ عبارتند از cluster ها، node ها، shard و replica ها و تحلیلگرها.
Cluster
یک کلاستر از گروهی از نودها تشکیل شده است که دادهها را ذخیره میکنند. شما میتوانید با کمک آن تعداد نودهایی را که با یک کلاستر اجرا میشوند و همچنین آدرس IP سرور مجازی یا فیزیکی آنها را در فایل config/elasticsearch.yml، که شامل تمام تنظیمات پیکربندی است، مشخصکنید.
نودها در یک کلاستر به یکدیگر متصل هستند و هر نود حاوی قسمتی از دادههای کلاستر است. هنگامی که یک نود جدید ایجاد میشود، سیستم به طور خودکار یک کلاستر ایجاد میکند. نودها در فرآیندهای جستجو و نمایهسازی کلاستر شرکت میکنند.
Node
به طور کلی، اصطلاح نود به سروری اطلاق میشود که به عنوان بخشی از کلاستر کار میکند. از لحاظ فنی میتوان چندین نود را روی یک ماشین اجرا کرد. الستیک سرچ از یک یا چند نود مبتنی بر کلاستر تشکیل شده است. به صورت پیش فرض هنگامی که الستیک سرچ شروع به کار میکند، یک نود هم شروع به اجرا میکند. انواع نودهای الستیک سرچ شامل نود اصلی، نود دیتا و نود کلاینت است.
۱. نود اصلی مسئول پردازش وضعیت کلاستر و انتشار آن به نودهای دیگر و همچنین کلیه عملیات انجام شده در سطح کلاستر از جمله ایجاد و حذف ایندکسها است.
۲. نود دیتا وظیفه نگهداری دیتا و ایندکس معکوس را بر عهده دارد.
۳. نود کلاینت برای بالانس کردن بار درخواستهای ورودی بین نودهای مختلف کلاستر به کار میرود.
Shard
با اینکه هیچ محدودیتی برای تعداد اسنادی که میتوانید در هر ایندکس ذخیره کنید، وجود ندارد اما در صورتی که یک ایندکس از محدودیتهای ذخیرهسازی سرور میزبان فراتر برود، الستیک سرچ ممکن است با مشکل مواجه شود. برای جلوگیری از مشکلات احتمالی، ایندکسها به قطعات کوچکی به نام shard ها تقسیم میشوند. با کمک shard ها شما میتوانید عملیات را توزیع و عملکرد الستیک را بهتر کنید و بعد از ایجاد یک ایندکس به تعداد لازم shard ایجاد کنید. هر shard به عنوان یک ایندکس مستقل عمل میکند و شما میتوانید آنها را در هر کدام از سرورهای کلاستر هاست کنید.
Replica
برای ایجاد سازوکار ایمن، پشتیبانگیری و بازیابی اطلاعات از Replica استفاده میکنیم. Replica ها کپیهایی از Shard ها هستند که معمولا برای اطمینان از دسترسی داشتن به اطلاعات در همه شرایط، این کپیها روی نودی غیر از نود حاوی Shard اولیه ایجاد میشوند. بعد از ایجاد یک ایندکس شما میتوانید به تعداد مورد نیاز Replica تعریف کنید.
تحلیلگرها
تحلیلگرها مسئول تجزیه عبارتها، استخراج کلمات معنادار و تشکیلدهنده آنها برای استفاده در فرایند ایندکسگذاری اسناد هستند. در تحلیل نرمافزار، تحلیلگر قبل از ذخیره یک سند، ابتدا کلمات موجود در متن را نشانهگذاری میکند و بعد آنها را برای ذخیره کردن در ایندکس معکوس آماده میکند. زمانی که جستجویی توسط کاربر انجام میشود، الستیک سرچ بجای سند اصلی برای جستجو به خروجی تحلیلگر مراجعه میکند. تحلیلگرها در انواع مختلف در دسترس ما هستند ولی تحلیلگر استاندارد الستیک نیازهای اغلب سیستمها را برآورد میکند.
جمعبندی
در این مقاله درباره این که ELK Stack چیست؟ صحبت کردیم و گفتیم که ELK Stack مجموعهای از ابزارها مثل Elasticsearch, Logstash, Kibana, Beats است که در سیستمهای نرمافزاری به منظور جمعآوری و ایندکسگذاری دادههای بدون ساختار و گزارشگیری و تحلیل آنها استفاده میشود. ELK Stack به کمک معماری توزیع شده، امکان استفاده در مقیاسهای بزرگ را فراهم میکند. در دسترس بودن اطلاعات به کمک نگهداری کپی از آنها، مدیریت عملیات پشتیبانگیری و بازیابی اطلاعات از امکانات ELK Stack است.
دیدگاهتان را بنویسید