تصمیم گیری بر اساس اطلاعات با کمک کیبانا و الستیک

 

همیشه گفته می‌شه تیم‌ها باید بر اساس اطلاعات تصمیم گیری کنند یا به اصطلاح data-driven باشند. فکر نمی‌کنم کسی با این ایده مشکلی داشته باشه. پس چرا کمتر جایی می‌بینیم واقعا بر اساس اطلاعات تحلیل کنند و تصمیم بگیرند؟

  • تیم به اهمیت اطلاعاتی که در اختیار داره یا می‌تونه داشته باشه واقف نیست
  • تیم وقت نداره ابزارهای جمع آوری و نمایش اطلاعات را بسازه
  • مدیران تجربه‌ی خودشون رو ارجح بر اطلاعات ورودی می‌دونن
  • تصمیم‌گیری بر عهده‌ی یک نفره و اون یک نفر هم حوصله یا زمان کافی برای تحلیل اطلاعات ندارد

استک الستیک مجموعه ابزارهای فوق‌العاده‌ای را  به صورت رایگان و اپن سورس عرضه کرده که می‌تونه راه حل دو مورد اول باشه. زمانی برای نصب نمی‌گیره، کاملا مستقل از سیستم‌ها کار می‌کنه و از همه مهم‌تر احتیاجی به تغییر در هیچ کجای سیستم نیست. در ادامه در مورد این زنجیره محصولات الستیک صحبت می‌کنم.  تمرکز این نوشته هم روی بیزینس‌های آنلاین است.

قبل از هرچی اصلا الستیک و کیبانا چی هست؟

الستیک یک موتور جستجوی خیلی قوی است که خیلی ازشرکت‌های بزرگ دنیا همین الان عملیات سرچ را با  استفاده از این موتور انجام می‌دهند. مثلا اگر روی یکی از تگ‌های استک‌اورفلو کلیک کرده باشید، جواب‌هایی که در نتایج می‌بینید همه توسط الستیک جمع‌آوری شده. می‌تونیم به الستیک به عنوان یک دیتابیس همراه با یک فریم‌ورک جستجو نگاه کرد که با API عبارت‌های جستجو را دریافت می‌کنه و به صورت JSON جواب می‌ده.

تا اینجا دیدیم الستیک فقط وظیفه‌ی ذخیره و جستجوی سریع را انجام می‌ده، تنها اینترفیس الستیک هم کار با API این سیستم است. کیبانا وظیفه‌ی نمایش اطلاعات ذخیره شده در الستیک (یا هر سیستم دیگری) را بر عهده داره. این سیستم می‌تونه درخواست انواع جستجوها را بدون احتیاج به برنامه نویسی دریافت کند، نمودارهای مختلف بر اساس آن‌ها رسم کند و با کنار هم قرار دادن نمودارها و اعداد داشبورد درست کند.

 

نمونه‌ای از دشبورد کیبانا

 

این دو سیستم قرار است چه اطلاعاتی از بیزینس من جمع‌آوری کنند؟

قبل‌تر گفتم برای استفاده از کیبانا احتیاجی به تغییر در سیستم نیست. به عبارت بهتر فقط کافی است لاگ‌هایی که همین الان توسط سیستم در حال تولید هستند را به الستیک برسونیم. اگر با تکنولوژی مایکروسافت مشغول به کارید، لاگ‌های IIS و اگر با Nginex یا هر تکنولوژی دیگری، کافی است مسیر ذخیره‌ی لاگ‌ها و اطلاعاتی که در لاگ وب سرور ذخیره می‌شود را بازبینی کنید. اگر به ازای هر هیت که به وب سرور وارد می‌شود یک خط لاگ به لاگ‌های سیستم شما اضافه می‌شود، آماده‌ایم برای قدم بعدی!

اما مهم‌ترین اطلاعاتی که در این لاگ وجود دارد چیست؟ به صورت پیش فرض،  اطلاعاتی از قبیل آدرس صفحه یا فایل درخواستی توسط کاربر، آي پی و برازر کاربر، آدرس صفحه Referrer تاریخ و ساعت درخواست. به ازای هر کاربر حداقل یک درخواست به وب سرور ارسال می‌شود و اطلاعاتی که گفته شد از درخواست دهنده در لاگ وب سرور دخیره می‌شود. البته فراموش نکنیم که مثلا برای درخواست تنها یک صفحه ممکن است دهها درخواست برای دریافت فایل‌های سی اس اس و غیره  از یک کاربر ارسال شود.

چطور باید اطلاعات را به الستیک رساند؟

FileBeat برای همین منظور ساخته شده! این نرم افزار روی پلت‌فرم جاوا کار میکنه بنابراین روی هر وب سروری قابل نصب است.  فایل‌بیت فایل های لاگ را زیر نظر می‌گیره و هربار تغییری در لاگ رخ بده، این تغییر را برای هدفی که براش تنظیم شده ارسال می‌کنه. میتونید فایل بیت را به صورت سرویس در ویندوز یا لینوکس فقط برای یک بار تعریف کنید و همیشه تغییرات فایل‌های لاگ را در جای دیگری تحویل بگیرید.

اما این اطلاعات به کجا باید ارسال بشه؟ به Logstash!

لاگ‌استش چیه و چه کاری انجام می‌ده؟

Logstash وظیفه‌ی دریافت و آماده سازی لاگ‌های دریافتی به دیتابیس را به عهده داره. برای مثال فرض کنید شما لاگ‌های IIS را به لاگستش ارسال کرده‌اید. این سیستم بر اساس تنظمیاتی که از قبل انجام دادید، تمام فیلدهایی که برای شما ضروری است را از لاگ استخراج می‌کند و اطلاعات تمیز دسته بندی شده را به دیتابیس (یا در اینجا الستیک) ارسال می‌کند. یکی از امکانات زنجیره‌لاگستش و فایل‌بیت اینجاست که می‌تونید از چند منبع مختلف اطلاعات را دریافت و پردازش کنید و تمام اطلاعات را در یک فرمت مشخص برای بانک ارسال کنید. یعنی بدون توجه  به اینکه اطلاعات شما از چه سروری و چه تکنولوژی ارسال می‌شه، این دو سیستم وظیفه‌ی مانیتور کردن و ارسالی اطلاعات تمیز به بانک را به عهده می‌گیرند.

حالا چطور باید این اطلاعات را دید؟

بعد از این‌که اطلاعات در الستیک ذخیره شد، با استفاده از API این سیستم می‌توان هر خروجی را درخواست کرد. اینجاست که به عنوان آخرین زنجیره‌ی این چرخه Kibana وارد بازی می‌شه. از طریق اتصال کیبانا به الستیک می‌شود در لحظه اطلاعات لاگ‌های ورودی را مشاهده کرد و بدون احتیاج به دانستن زبان برنامه نویسی انواع عبارت‌های جستجو را درخواست کرد. برای این کار کافی‌ست در خط فرمان بالای صفحه عبارت منطقی مثل:
request:"index.html" AND response:200

را بنویسیم تا کیبانا فقط لاگ‌هایی که شامل درخواست صفحه ایندکس بوده‌اند و با موفقیت  پاسخ‌شون ارسال شده را نمایش بده. حالا این جستجوی ساده را میشه ذخیره کرد و با رفتن به تب  Visulize یک نمودار ستونی ساده بر اساس آن ترسیم کرد. در نهایت در تب Dashboard هر نموداری که قبلا ساخته‌اید را می‌توانید وارد کنید.

تبریک می‌گم. به همین سادگی تونستیم تعداد دفعات بازدید یک صفحه‌ی خاص برای هر بازه زمانی که احتیاج داشته باشیم را استخراج کنیم.

 

چند نکته کاربردی

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

دومین نکته هم این‌که اگر قصد تست این محصولات را دارید یا اصلا می‌خواهید خودتان در سرور داخلی همه را نصب کنید، بهتر است سراغ داکر و ایمیج‌های داکر رسمی الستیک بروید. این کار دردسر نصب را تقریبا به صفر می‌رسونه و کار را هم برای آپدیت‌های بعدی واقعا راحت‌تر می‌کنه.

  1. اتفاقا در یکی دو تا از جلسات تهلاگ سال پیش ارایه هایی راجع به LogStash و فکر می کنم الستیک وجود داشت و راجع بهش صحبت شده بود. توی یکی دو سال اخیر دیدم که استفاده از الستیک و کیبانا خیلی زیاد شده.

  2. بسم الله الرحمن الرحیم
    باسلام و احترام
    ممنون از اینکه وقت گذاشتید و این مطالب رو مختصر و مفید ارائه کردید.
    یا علی

  3. سلام
    مطلب خوبی بود
    اگر از این مجموعه فقط برای ثبت لاگ استفاده می کنید و نیازی به پردازش های میانی LOGSTASH ندارید می توانید به صورت مستقیم، لاگ ها رو با FILEBEAT به ELASTICSEARCH بدهید.

Leave a Reply

Your email address will not be published. Required fields are marked *