Introduction to ELK Stack
مقدمه :
استک ELK با میلیونها بار دانلود برای کامپوننتهای مختلف آن از زمان معرفی اولیه، به محبوبترین پلتفرم مدیریت لاگ در جهان تبدیل شده است. در مقابل، Splunk - رهبر تاریخی در فضا - در کل 15000 مشتری به گزارش خود در اختیار دارد.
ولی دقیقاً ELK چیست؟ چرا این استک نرم افزاری با چنین علاقه و استقبالی گستردهای روبرو شده است؟ چگونه کامپوننتهای مختلف موجود در این استک با هم تعامل دارند؟
پشته ELK چیست؟
تا یک یا دو سال پیش، استک ELK مجموعهای از سه محصول متن باز بود - Elasticsearch ، Logstash و Kibana - که همگی توسط شرکت Elastic توسعه، مدیریت و نگهداری میشدند. معرفی و اضافه شدن کامپوننت جدیدی به نام Beats، این پشته را به یک پروژه چهار پا تبدیل کرد و منجر به تغییر نام پشته بعنوان Elastic Stack شد.
Elasticsearch یک موتور متن باز آنالیز و جستجوی Full-Text و مبتنی بر موتور جستجوی Apache Lucene است. Logstash یک جمع کننده لاگ است که داده ها را از منابع مختلف ورودی جمع آوری میکند، تغییرات و پیشرفت های مختلف را اجرا میکند و سپس داده ها را به مقصد های مختلف خروجی ارسال میکند.
Kibana یک لایه تجسم است که در بالای Elasticsearch کار میکند، توانایی تجزیه و تحلیل و تجسم داده ها را به کاربران ارائه میدهد. آخرین و مهمترین مورد: Beats است که در اصل agent های سبکی هستند که روی میزبانهای edge نصب میشوند تا انواع مختلف دادهها را برای ارسال به پشته جمع آوری کنند.
در کنار هم، این اجزای مختلف معمولاً برای نظارت، عیبیابی و ایمنسازی محیط IT شما مورد استفاده قرار میگیرند (اگرچه کاربرد های بیشتری برای ELK Stack مانند هوش تجاری و تجزیه و تحلیل وب وجود دارد). Beats و Logstash مسئولیت جمعآوری و پردازش دادهها را در دست دارند، Elasticsearch دادهها را فهرستبندی و ذخیره میکند و Kibana یک رابط کاربری برای جستجوی دادهها و تجسم آنها فراهم میکند.
چرا ELK اینقدر محبوب است؟
پشته ELK محبوب است زیرا یک نیاز را در فضای مدیریت لاگ ها و فضای تجزیه و تحلیل برآورده کرده است. نظارت بر برنامههای مدرن و زیرساختهای فناوری اطلاعات که در آنها مستقر شدهاست، نیاز به یک راه حل مدیریت لاگ ها و تجزیه و تحلیل دارد که مهندسان را به راحتی قادر میسازد تا بر چالش نظارت بر محیطهای بسیار پراکنده، پویا و پر سر و صدا غلبه کنند.
پشته ELK با فراهم آوردن یک بستر قدرتمند برای کاربران، دادهها را از چندین منبع داده جمع آوری و پردازش میکند، دادهها را در یک منبع داده متمرکز ذخیره میکند که این منابع میتوانند با رشد دادهها به راحتی مقیاس بندی شوند و در آخر مجموعهای از ابزارها را برای تجزیه و تحلیل دادهها فراهم میکند. البته پشته ELK پروژهای متنباز است و بدلیل حمایت سازمان های IT از محصولات متن باز، همین امر به تنهایی میتواند محبوبیت این پشته را توضیح دهد. متن باز بودن همچنین به معنای یک جامعه پر جنب و جوش است که بطور مداوم ویژگیهای جدیدی را ایجاد میکنند و در صورت نیاز به تیم شما کمک میکنند.
مطمئناً Splunk مدت هاست که در بازار پیشرو است. اما ویژگیهای متعدد آن بطور فزایندهای ارزش قیمت زیاد آن را ندارد – به ویژه برای شرکتهای کوچکتر مانند محصولات SaaS و استارتاپ های فنی. Splunk حدود 15000 مشتری دارد در حالی که ELK در یک ماه چندین برابر بیشتر از تعداد مشتریان Splunk دانلود میشود. ELK ممکن است همه ویژگیهای Splunk را نداشته باشد، اما نیازی هم به آن همه ویژگیهای تحلیلی ندارد. ELK یک پلتفرم ساده و قوی برای مدیریت لاگ ها و تجزیه و تحلیل آنها است که هزینه بسیار کمی برای آن دارد.
چرا تجزیه و تحلیل لاگ ها امروزه اهمیت بیشتری پیدا کرده است؟
در جهان رقابتی امروز، سازمانها نمیتوانند هزینه یک ثانیه از کار افتادن یا عملکرد کند برنامهای خود را تأمین کنند. مشکلات عملکردی میتواند به سادگی به یک برند آسیب برساند و در بعضی موارد بطور مستقیم به از دست دادن درآمد تبدیل شود. به همین دلیل، سازمان ها نمیتوانند از عهده مصالحه نیز برآیند و رعایت نکردن استانداردهای نظارتی میتواند به جریمههای سنگین و آسیب رساندن به یک تجارت حتی به اندازه یک مشکل عملکردی منجر شود.
برای اطمینان از اینکه برنامهها همیشه در دسترس، کارآمد و ایمن هستند، مهندسان به انواع مختلف دادههای تولید شده توسط برنامه هایشان و زیرساخت های پشتیبانی کننده آنها اعتماد میکنند. این دادهها، چه لاگ ها و چه متریک ها، یا هر دو، امکان نظارت بر این سیستمها و شناسایی و حل مشکلات را در صورت بروز آنها فراهم میکند.
لاگ ها همیشه وجود داشتهاند و همچنین ابزارهای مختلفی برای تجزیه و تحلیل آنها هم موجود است. ولی آنچه تغییر کرده، معماری محیط های تولید کننده این لاگ ها است. معماری ها به میکروسرویس ها، کانتینرها و زیرساختهای orchestration مستقر در ابر، روی ابرها یا محیط های ترکیبی تبدیل شدهاند.
به همین دلیل حجم دادههای تولید شده توسط این محیط ها دائماً در حال رشد است و این موضوع به خودی خود یک چالش محسوب میشود. جمعآوری لاگها در محیطهایی که از صدها کانتینر متشکل شدهاند دیگر به روشهای قدیمی امکان پذیر نیست.
اینجاست که راهحل های متمرکز مدیریت و تجزیه و تحلیل لاگها مانند پشته ELK به صحنه میآیند و به مهندسان مختلف اعم از DevOps ، IT Operations یا SRE اجازه میدهند تا دید مورد نیاز خود را بدست آورند و از دسترسی و عملکرد برنامه ها در همه زمانها اطمینان حاصل کنند.
راهحل های مدرن مدیریت و تجزیه و تحلیل لاگها شامل قابلیتهای اصلی زیر میباشند:
- Aggregation یا تجمیع : توانایی جمعآوری و ارسال لاگهای مربوطه از چندین منبع داده.
- Processing یا پردازش : توانایی تبدیل لاگها به دادههای معنیدار برای تجزیه و تحلیل آسانتر.
- Storage یا ذخیرهسازی : توانایی ذخیره دادهها برای مدت زمان طولانی به منظور نظارت، تجزیه و تحلیل روند و موارد استفاده امنیتی.
- Analysis یا تجزیه و تحلیل : توانایی تشریح اطلاعات با پرس و جو و ایجاد تجسم و داشبورد در بالای آن.
نحوه استفاده از پشته ELK برای تجزیه و تحلیل لاگها
همانطور که در بالا ذکر شد، در کنار هم، اجزای مختلف پشته ELK یک راه حل ساده و در عین حال قدرتمند برای مدیریت و تجزیه و تحلیل لاگها ارائه میدهد. اجزای مختلف موجود در پشته ELK برای تعامل با یکدیگر بدون تنظیمات اضافی زیاد طراحی شدهاند. با این حال، چگونگی طراحی پشته در محیط و مورد های کاربرد شما بسیار متفاوت است.
برای یک محیط توسعه با ابعاد کوچک، معماری کلاسیک به شرح زیر است:
با این حال، برای مدیریت خطوط لوله پیچیده تر ساخته شده برای مدیریت مقدار زیادی از داده ها در تولید، اجزای اضافی برای انعطاف پذیری (Kafka ، RabbitMQ ، Redis) و امنیت (nginx) به معماری لاگ های شما اضافه میشوند:
این البته یک نمودار ساده برای تصویرسازی است. یک معماری کامل در محیط عملیاتی شامل چندین نود Elasticsearch، شاید چندین Logstash، یک مکانیزم بایگانی، یک افزونه هشدار و یک نسخه کامل در مناطق یا بخشهای مرکز داده شما برای در دسترس بودن بالا باشد.
Elasticsearch چیست؟
Elasticsearch قلب زنده همان محبوبترین پلتفرم تجزیه و تحلیل لاگ ها در جهان است - ELK Stack (Elasticsearch ، Logstash و Kibana). نقشی که Elasticsearch بازی میکند آنقدر مهم و محوری است که با اسم خود پشته مترادف شده است. Elasticsearch که در درجه اول برای جستجو و تجزیه و تحلیل لاگ ها استفاده میشود، امروزه یکی از محبوبترین سیستم های پایگاه داده موجود در جهان است.
در ابتدا در سال 2010 منتشر شد، Elasticsearch یک موتور جستجوگر و تجزیه و تحلیل مدرن است که مبتنی بر Apache Lucene میباشد. کاملاً متن باز و ساخته شده با جاوا، Elasticsearch به عنوان یک پایگاه داده NoSQL طبقه بندی میشود. Elasticsearch داده ها را به روشی بدون ساختار ذخیره میکند و تا همین اواخر امکان جستجو داده ها با استفاده از SQL مقدور نبود پروژه جدید Elasticsearch SQL امکان تعامل با داده ها را برای عبارات SQL فراهم میکند.
برخلاف اکثر پایگاه های دادهNoSQL ، Elasticsearch تمرکز زیادی بر قابلیت ها و ویژگی های جستجو دارد. تا حدی که در واقع، ساده ترین راه برای دریافت اطلاعات از Elasticsearch جستجوی آن با استفاده از REST API است. در زمینه تجزیه و تحلیل دادهها، از Elasticsearch همراه با سایر اجزای موجود در پشتهELK ، Logstash و Kibana استفاده میشود و نقش ایندکس گذاری و ذخیره سازی داده ها را بازی میکند.
Logstash چیست؟
تجزیه و تحلیل کارآمد لاگ ها بر اساس لاگ های ساختار یافته مناسب است. ساختار همان چیزی است که شما را قادر میسازد در هر ابزار مانیتور لاگی که استفاده میکنید، داده ها را به راحتی جستجو، تجزیه و تحلیل و تجسم کنید. ساختار همچنین چیزی است که زمینه داده شما را فراهم میکند. در صورت امکان، این ساختار باید متناسب با لاگهای سطح برنامه باشد. به عنوان مثال، در سایر موارد مثل لاگ های مربوط به زیرساخت و سیستم، به شما بستگی دارد که با تجزیه آنها به لاگ ها ساختار مورد نظر را بدهید.
در پشته ELK (Elasticsearch ، Logstash و Kibana)، کار اساسی تجزیه دادهها به "L" در پشته یا همان Logstash داده میشود. Logstash کار خود را به عنوان ابزاری متن باز آغاز کرد که برای کنترل جریان زیاد داده های گزارش از چندین منبع ساخته شده بود. بعد از اینکه در پشته ELK قرار گرفت، به اسب بارکش پشته تبدیل شد، همچنین وظیفه پردازش لاگها، بهتر کردن آنها را بر عهده دارد و سپس آنها را به یک مکان مشخص برای ذخیره سازی (انباشت) ارسال میکند.
در یک اکوسیستم بزرگ از افزونه ها، از Logstash میتوان برای جمع آوری، غنی سازی و تبدیل آرایه وسیعی از انواع مختلف داده استفاده کرد. بیش از 200 افزونه مختلف برای Logstash وجود دارد که جامعه وسیعی از ویژگیهای قابل توسعه آن استفاده میکنند.
همیشه برای Logstash راه هموار نبوده است. به دلیل برخی از مشکلات ذاتی عملکردی و نقص طراحی، Logstash در طی سالهای گذشته شکایات زیادی از کاربران دریافت کرده است. پروژه های جانبی برای کاهش برخی از این مسائل (به عنوان مثال Lumberjack ، Logstash-Forwarder ، Beats) توسعه داده شدند و جمع کننده های دیگر با Logstash شروع به رقابت کردند
. با این وجود، علیرغم این نقص ها، Logstash هنوز یک عنصر مهم در پشته است. گام های بزرگی برای تلاش و کاستن از این دردسرها با معرفی پیشرفت هایی در خود Logstash برداشته شده است، مانند یک موتور اجرایی کاملاً جدید که در نسخه 7.0 در دسترس قرار گرفته است، و در نهایت همه اینها کمک میکند لاگ انداختن با ELK بسیار مطمئن تر از گذشته باشد.
Kibana چیست؟
هیچ راه حل مدیریت متمرکزی بدون ابزار تجزیه و تحلیل و تجسم کامل نیست. بدون توانایی جستجوی و نظارت موثر بر داده ها، فقط تجمیع و ذخیره آنها کاربرد چندانی ندارد. Kibana این نقش را در ELK Stack بازی میکند - یک لایه تجزیه و تحلیل و تجسم قدرتمند در بالای Elasticsearch و Logstash.
Kibana كاملاً متن باز، یك رابط كاربری مبتنی بر مرورگر است كه میتواند برای جستجو، تجزیه و تحلیل و تجسم دادههای ذخیره شده در شاخص های Elasticsearch مورد استفاده قرار گیرد (از Kibana نمیتوان به همراه پایگاههای دیگر استفاده كرد). Kibana به دلیل قابلیتهای گرافیکی و تجسم غنی که به کاربران اجازه میدهد حجم زیادی از دادهها را کشف کنند، مشهور و محبوب است.
Beats چیست؟
Beats مجموعهای از فرستندههای لاگ متن باز است که برای جمع آوری گزارش ها یا معیارها به عنوان agent های نصب شده بر روی سرورهای مختلف در محیط شما عمل میکنند. این حمل کننده ها که به زبان Go نوشته شدهاند، به گونهای طراحی شدهاند که ماهیتی سبک دارند - آنها ردپای نصب کوچکی بر جای میگذارند، از نظر منابع کارآمد هستند و بدون وابستگی کار میکنند.
داده های جمع آوری شده توسط Beats های مختلف متفاوت است - ثبت پرونده ها در مورد Filebeat، داده های شبکه در مورد Packetbeat، معیارهای سیستم و خدمات در مورد Metricbeat، گزارش رویدادهای Windows در مورد Winlogbeat و غیره. علاوه بر Beats توسعهیافته و پشتیبانی شده توسط الاستیک، همچنین لیست فزایندهای از Beats توسعه یافته و توسط جامعه ارائه میشود.
پس از جمع آوری، می توانید Beats خود را پیکربندی کنید تا داده ها را مستقیماً به Elasticsearch یا برای پردازش بیشتر به Logstash ارسال کنند. برخی از Beats ها همچنین از پردازش داخلی پشتیبانی میکنند که به تخلیه برخی از بار های سنگین مربوط به Logstash کمک میکند.
نتیجهگیری :
تقریباً میتوان از هر منبع دادهای برای انتقال لاگ ها به پشته ELK استفاده کرد. اینکه شما چه روشی را انتخاب کنید به نیاز، محیط خاص، جعبه ابزار ترجیحی و موارد دیگر بستگی دارد.
مدیریت لاگ ها برای حل مشکلات و اطمینان از اجرای سالم برنامهها به اقدامی ضروری برای هر سازمانی تبدیل شدهاست. بدین ترتیب، مدیریت لاگ ها در واقع به یک سیستم حیاتی برای محیط های IT تبدیل شدهاست.
هنگام عیبیابی یک مسئله در محیط عملیاتی یا تلاش برای شناسایی یک خطر امنیتی، سیستم باید شبانه روز فعال باشد. در غیر این صورت، نمیتوانید مشکلات پیش آمده را عیبیابی یا حل کنید. بطور بالقوه این امر منجر به تخریب عملکرد، توقف کار یا نقض امنیت میشود. یک سیستم تجزیه و تحلیل لاگ ها که بطور مداوم در حال اجرا است و میتواند سازمان شما را به وسیلهای مجهز کند که بتواند موضوعات خاصی را که باعث خرابی سیستم شما شدهاند، ردیابی و شناسایی کند.