مانیتورینگ ELK چیست

مقدمه

مانیتورینگ یک رویکرد فعالانه برای ایمن سازی محیط است که پاسخ دهی مناسب را برای بررسی آن محیط به  صورت real time فراهم میکند. برای این منظور ابزار های زیادی وجود دارد که میتوان با استفاده از آن به خواسته های خود رسید.

در مورد ما صحبت در مورد openstack می باشد که ما نیاز به مانیتور کردن سخت افزار، سرویس ها  و منابع ابری خود داریم (منابع ابری شامل تمام ویژگی هایی است که در openstack ساخته میشود مانند instance, network  و …)

برای پیاده سازی یک log aggregation ، تحلیل و مانیتورنیگ آن نیاز است که به چند مورد مهم توجه کنیم. برای مانیتورینگ می توانیم از ابزار های متفاوتی که برای این منظور ایجاد شده اند استفاده کنیم. برخی از این ابزار ها opensource بوده و برخی نیز توسط شرکت های دیگر پشتیبانی می شود. برخی روش ها هم می تواند کاملا شخصی سازی شده باشد. این ابزار ها رویداد ها را ثبت کرده و می تواند کاربر اصلی سیستم را از ان رویداد مطلع سازد. برای ایجاد این سیستم ها باید چند نکته را مورد توجه قرار دهید.

  1. شناسایی عدم وجود سیستم لاگ خود یک رویداد با اولیت بالا می باشد. چنین رویدادی نشانه خرابی سیستم است یا ممکن است نشانه ورود یک متجاوز  به سیستم باشد که سرویس را به طور موقع غیر فعال کرده است تا حرکت های خود را مخفی کند.
  2. رویداد هایی مانند خاموش یا روشن شدن یک سرویس که در برنامه زمان بندی جاری وجود ندارد ممکن است یک دلیل امنیتی باشد.
  3. رویداد های سیستم عامل مانند ورد و خروج کاربران یا راه اندازی مجدد سیستم دید مناسبی از نوع کاربری از سیستم را نشان میدهد.
  4. شناسایی بار زیاد سرور های موجود می تواند توصیف خوبی از شرایط برای ایجاد یک تقسیم کننده بار یا افزودن سرور جدید جهت دسترسی بالا را فراهم کند.
  5. قطع شدن bridge ها می تواند عدم دسترسی به سرویس توسط مشتری را ایجاد کند در نتیجه بررسی وضعیت آن ها لازم خواهد بود.
  6. برای کاهش ریسک حذف یک ماشین توسط کاربر یا پروژه یا دامنه در سرویس احراز هویت باید در سرویس های دیگر وابستگی ها به این موجودیت بررسی گردد.

در ابر ماشین های مجازی زیادی ممکن است وجود داشته باشد و مانیتور کردن این ماشینها فراتر از مانیتور سخت افزار و فایل های لاگ است که فقط ارتباط با دیتابیس را شامل میشود.

Openstack  و journal

در سرویس openstack سرویس جمع آوری کننده لاگ ها از syslog به journal مهاجرت نموده است. در گذشته برای جمع آوری لاگ ها در محیط openstack از rsyslog استفاده میشد. (نسخه stein به قبل) در playbook های انزیبل راه اندازی و جمع آوری لاگ های تمام سرور ها و سرویس های آن در یک کانتینر پیاده سازی شده است.

infra-journal-remote.yml به صورت پیشفرض غیر فعال می باشد  و در هنگام نصب باید اعلام شود که نیاز به نصب دارد. پس از نصب تمام سرویس هایی که در سرور قرار دارند و لاگ آن ها در journal ذخیره شده است به سرور مرکزی که openstack-user-config.yaml معرفی شده منتقل میگردد.

این انتقال توسط سرویس systemd-journal-upload.service  انجام میشود و مسئولیت جمع آوری آن بر عهده سرویس systemd-journal-remote.service می باشد که باید در سرور مقصد فعال گردد.

پس از اجرای playbook نصب لاگ منجیر این سرویس ها به صورت اتومات بر روی سرور های infra و compute نصب خواهد شد و می توانیم مانیتورینگ یک پارچه این سرورها را در مبحث لاگ داشته باشیم. توجه داشته باشید که حجم لاگ های ارسالی زیاد خواهد بود و باید جهت مدیریت آن کافنیگ های مورد نیاز خورد را اعمال نمایید. در ادامه به بحث کانفیگ های جورنال و افزودن سرویس های کانتینر به آن می پردازیم.

برای مطالعه بیشتر در مورد مانیتورینگ شبکه با elk میتواند به این مقاله مراجعه کنید

فصل دوم سرویس های مانیتورینگ ELK

Beats

در بیشتر سرویس های مانیتورینگ مسئولیت جمع آوری اطلاعات بر عهده یک سرویس در سرور مرکزی خواهد بود. در ELK پرکاربردترین ابزار beats است. این ابزار شامل چندین سرویس مختلف برای جمع آوری انواع داده می باشد. برای مثال filebeat که اطلاعات را از یک فایل خوانده و آن ها را جمع آوری میکند و برای مقصد دلخواه ارسال می نماید. یا metricbeat که اطلاعات مربوط به سیستم سخت افزاری سرور مانند پردازش گر یا هارد دیسک را جمع آوری کرده و ارسال می کند. در این مقاله ما از journalbeat که جهت جمع آوری لاگ ها از journal می باشد را استفاده میکنیم و آن را به سرور مقصد ارسال میکنیم. در فصل های بعد تنظیمات و روش نصب این سرویس را نشان خواهیم داد.

Elasticsearch

اطلاعات جمع آوری شده برای مانیتورینگ می توانند به صورت آنی فقط برای نمایش لحظه ای مورد استفاده قرار بگیرند. اما در بیشتر مواقع شما نیاز خواهید داشت که اطلاعات جمع آوری شده را برای مدت طولانی نگهداری کنید و بتوانید در هر زمان با سریع ترین روش به آن ها دسترسی پیدا کنید. یکی از روش های ذخیره سازی استفاده از ابزاری با نام elasticsearch خواهد بود که اطلاعات را دریافت، ایندکس و ذخیره سازی می کند و با ارائه فیلتر های مناسب امکان query های مورد نظر شما را فراهم میکند.

این ابزار قابلیت scale شدن به صورت افقی را داشته و می توان از آن در محیط های با پردازش سنگین داده که قابلیت تخصیص منابع یکپارچه در سیستم را ندارند استفاده نمود. به طور کلی قلب elk این ابزار می باشد.

از قابلیت های این ابزار دریافت اطلاعات به صورت داده های خطی یا raw دیتا می باشد که پس از پردازش و تحلیل این خطوط داده آنها را normalize کرده و آن ها را ذخیره سازی میکند. امکانات این ابزار بیشتر در زمان نمایش داده ها نشان داده خواهد شد.

Elasticsearch هسته اصلی در Elk می باشد. تمام فرایند های ذخیره سازی و ایندکسینگ در این ابزار انجام میپذیرد. نوع ذخیره سازی document-oriented می باشد و ساختار ذخیره سازی به صورت JSON خواهد بود.  برای کار با این ابزار نیاز به دانستن مفاهیم زیر می باشد.

  • Index
  • Type
  • Document
  • Cluster
  • Node
  • Shards and replica
  • Mapping and type
  • Inverted index


ادامه مطلب در لینک منبع
لینک منبع