مفهوم ELK Stack
ELK Stack مجموعهای از سه محصول Open-Source (متن باز) از Elastic میباشد:
- Elasticsearch که یک دیتابیس NoSQL بوده و مبتنی بر موتور جستجوی Lucene میباشد.
- Logstash ابزار Log Pipeline است و دادهها را به مقاصد و اهداف مختلف میرساند.
- Kibana لایهای تصویرسازی شده است که بر روی Elasticsearch کار میکند.
Elasticsearch اغلب به عنوان یک سرور برای جستجو شناخته میشود و تصور عمومی مبنی بر این است که “جستجو” به عنوان عملی است که توسط کاربر انجام میپذیرد نه به عنوان خدمتی که ارائه میگردد. اما واقعیت این است که عمل جستجو میتواند کاملا پیچیده باشد و سرورهای جستجویی که پیادهسازی شدهاند نیز به منظور پاسخگویی به همین نیاز میباشد.
به تعریف سادهتر، Elasticsearch یک دیتابیس NoSQL میباشد که اطلاعات را به صورت بدونِ ساختار ذخیره میکند و نمیتوان در آن از SQL Query استفاده نمود. Elasticsearch بر خلاف اکثر دیتابیسهای NoSQL، بر قابلیتها و ویژگیهای جستجو تمرکز مینماید، به حدی که سادهترین راه دریافت اطلاعات از Elasticsearch جستجو داده مورد نیاز، با استفاده از REST API میباشد.
بهترین استفاده از ELK Stack به منظور Storing (ذخیرهسازی)، Visualization (تصویرسازی)، آنالیز Logها و دیگر دادههای Time-Series میباشد. Logstash بخش جدایی ناپذیر از انتقال و دریافت داده از منبع Elasticsearch و حتی چیزی بیش از آن میباشد. این امر نه تنها امکان استخراج اطلاعات از طیف گستردهای از منابع را میسر میسازد، قابلیتهایی همچون ابزار فیلتر نمودن، پیام رسانی و شکل دادن به اطلاعات به صورتی که کار با آنها سادهتر شود را نیز فراهم مینماید. در ادامه مقاله به ارائه توضیحاتی پیرامون استفاده از Logstash خواهیم پرداخت.
Kibana که لایهی تصویرسازی شدهی ELK Stack میباشد، محبوبترین پلتفرم آنالیز Log بوده و بر پایهی Elasticsearch ،Logstash و Kibana ساخته شده است. در این مقاله به بررسی انواع ویژگیهای ساده و پیشرفتهی Kibana بر روی برخی اجزا و توضیح چگونگی انجام جستجوها در Kibana با استفاده از قواعد جستجوی Lucene پرداخته خواهد شد.
این سه محصولِ Open-Source، پرکاربردترین محصولات برای آنالیز Log در محیطهای IT میباشند. گرچه علاوه بر آنالیز، موارد استفادهی بسیار بیشتری برای ELK Stack از جمله اطلاعات کسبوکار، امنیت، تطبیقپذیری و آنالیز وب وجود دارد. Logstash وظیفهی جمعآوری و بخشبندی نمودن Logها را انجام داده و سپس Elasticsearch اطلاعات را Indexگذاری و ذخیره مینماید. پس از این مرحله Kibana وارد عمل شده و دادهها را تصویرسازی مینماید که موجب فراهم نمودن دیدگاههای عملی به محیط میگردد.
علت محبوبیت ELK Stack برآورده نمودن نیاز به فضای آنالیز Log است. نرمافزار سازمانی Splunk مدتهاست که در این بازار پیشرو میباشد اما ویژگیهای متعدد، قیمت بسیار بالای آن را توجیه نمیکند. این قیمت مخصوصا برای سازمانهای کوچکتر، Startupها و همچنین ارائه دهندگان محصولات SaaS هزینهی گزافی محسوب میگردد.
به همین دلیل نیز مشتریان ELK بسیار بیشتر از Splunk بوده و تعداد دانلوهای ماهیانهی ELK از کل مشتریان Splunk بیشتر میباشد. گرچه ELK تمامی ویژگیهای Splunk را دارا نیست اما در بسیاری از سناریوها نیز نیازی به ویژگیهای آنالیزی پیشرفته همچون Splunk وجود ندارد و پلتفرم آنالیز Log ارائه شده توسط ELK در عین سادگی کاملا کاربردی و مقرون به صرفه است.
همچنین سازمانها به صورت روز افزون به استفاده از محصولات Open Source متمایل میگردند و به این دلیل است که پلتفرمهای نرمافزاری جدیدترِ آنالیزِ اختصاصی همچون Sumo Logic، برای اینکه با استقبال عمومی مواجه شوند راه سختی در پیش دارند.
علت اهمیت یافتن آنالیز Log
همچنان که زیرساختهای IT به محیطهای Public Cloud همچون Amazon Web Services و Microsoft Azure منتقل میشوند، لزوم استفاده از ابزارهای امنیتی Public Cloud و پلتفرمهای آنالیز Log نیز دو چندان میگردد.
Performance Isolation در زیرساختهای مبتنی بر Cloud به خصوص زمانیکه بار کاری سیستمها بسیار زیاد باشد عملا امکانپذیر نیست. عملکرد ماشینهای مجازی در Cloud بر اساس بارهای کاری خاص، سرورهای زیرساختی، محیطها و تعداد کاربران فعال بسیار متغیر میباشد، در نتیجه قابلیت اطمینان (Reliability) و خرابیهای Node ممکن است به مشکلات بزرگی تبدیل شوند.
پلتفرمهای مدیریت Log قادر به مانیتور نمودن تمامی مسائل مربوط به این زیرساختها و نیز پردازش Logهای سیستمعامل، NGINX و Logهای سرور IIS برای Technical SEO و آنالیز ترافیک وب، Logهای برنامههای کاربردی، ELB و Logهای S3 بر روی AWS میباشد.
در تمامی این زمینهها مهندسین DevOps، مدیران سیستمها، مهندسین Reliability سایت و Developerها میتوانند از Logهایی که به صورت Data-Informed هستند (و نه به صورت Data-Driven همانند فیسبوک) برای اتخاذ تصمیمات بهتر استفاده نمایند و در نتیجه آنالیز Big Data اهمیت بیشتری یافته است که این اهمیت در محیطهای Cloud چندین برابر میباشد.
Big Data در آینده به صورت ترکیبی در محیطهای On-Premises و Cloud وجود خواهد داشت که نمونههایی از آنالیزهای آن عبارتند از:
- Hadoop که چارچوبی برای پردازش مجموعه دادههای بسیار بزرگ میباشد، حال نه تنها در ماشینهای فیزیکی بلکه در Cloud نیز کار میکند.
- Intuit نیز به آنالیز Cloud منتقل شده است زیرا نیازمند محیطی ایمن، باثبات و قابل بررسی میباشد.
- قدرت محاسباتی مقرون بهصرفهتر، مهندسین را قادر به ایجاد الگوریتمهای یادگیری ماشینی ساخته که میتوانند آنالیزهای پیشگویانه در Cloud انجام دهند.
لازم به ذکر است که پیادهسازی و نگهداری ابزار ELK Stack نیازمند کار بسیار و محصولات جانبی دیگر میباشد.
مزایای استفاده از Logz.io
نحوه کار Logz.io به این صورت است که ELK را دریافت میکند و Stack را به عنوان سرویسی مبتنی بر Cloud ارائه میدهد که مهندسین DevOps، مدیران سیستم، مهندسین Reliability سایت و توسعه دهندگان میتوانند برای متمرکز نمودن دادههای Logها، مانیتور کردن زیرساخت، عیبیابی مشکلات، به دست آوردن اطلاعات مربوط به کسبوکار و بهبود کلی تجربه کاربر از آن استفاده نمایند.
ELK در حالی که سرویسی با دسترسی بالا و بسیار مقیاسپذیر میباشد، نصب سادهای دارد. همچنین میتوان به آن ویژگیهای دیگری از جمله اعلام هشدار، برنامههای ELKمحور و پشتیبانی چند کاربره با سطوح مشخص دسترسی مبتنی بر Role را نیز افزود.