Hamid Montazeri
Hamid Montazeri
خواندن ۹ دقیقه·۳ سال پیش

لاگ و ابزارهای مدیریت آن

احتمالاً اگر حتی یک توسعه‌دهنده ساده نیز بوده باشید از لاگ‌ها در برنامه خود استفاده کرده‌اید. مثلاً به صورت بسیار ساده یک عبارت را در کنسول چاپ کرده‌اید تا از درستی کد خود مطمئن شوید. لاگ‌ها اما به این موارد محدود نمی‌شوند. لاگ‌های بسیار با انواع مختلف و ابزارهای متعددی برای مدیریت آن‌ها وجود دارد که در این نوشته با هم ‌آن‌ها را مرور می‌کنیم.

تعریف لاگ (log)

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

لاگ‌ها می‌توانند هر نوع اتفاق (event) را که بین کاربرهای مختلف صورت می‌گیرد یا در هنگام بکاپ گرفتن اتفاق می‌افتند یا در هنگامی که سیستم خطا می‌دهد و متوقف می‌شود را ثبت کنند. این لاگ‌ها می‌توانند پیام‌ها یا تراکنش‌ (‌transaction) ها یا درخواست‌های مختلفی باشند که در سیستم ثبت می‌شود.

پس همان طور که دیدیم لاگ‌ها از تعریف سنتی‌ای که در ذهن توسعه‌دهندگان کم‌تجربه وجود دارد و به معنای لاگ مثلاً برای ارور است بسیار فراتر است و می‌تواند حوزه بزرگی از اتفاقات رخ‌ داده در سیستم نرم‌افزاری را در بر گیرد.

انواع لاگ

بعضی لاگ‌ها توسط انسان می‌توانند خوانده شوند ولی بعضی دیگر قابل خواندن توسط انسان نیستند. از نمونه لاگ‌هایی که می‌توان نام برد لاگ‌های مربوط به تراکنش‌ها، ارورها و پیام‌ها است. پسوند فایل‌های لاگ می‌تواند .log یا .txt یا پسوندی دیگر باشد. اگر این لاگ‌ها توسط انسان قابل خواندن باشند، این لاگ‌ها در ویرایشگر متنی عادی، قابل دیدن و باز شدن است. البته بعضی لاگ‌ها ممکن است وابسته به نرم‌افزار خاصی باشد و در یک نرم‌افزار خصا باز شود.

چرا لاگ و مدیریت لاگ مهم است؟

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

مدیریت لاگ (log management) یعنی چه؟

مدیریت لاگ به معنای مجموعه فعالیت‌ها و فرایند‌هایی که برای تولید، جمع‌آوری، پارس کردن، ذخیره کردن، آرشیو کردن و دور انداختن لاگ‌ها انجام می‌شود است. ابزارهای مدیریت لاگ برای هندل کردن و مدیریت تمامی این لاگ‌ها که توسط محیط سیستم، شبکه، نرم‌افزار و کاربر تولید شده استفاده می‌شود. باید دقت داشت که این لاگ‌ها فقط توسط sys admin ها استفاده نمی‌شود بلکه توسط توسعه‌دهندگان سیستم نرم‌افزاری نیز قابل استفاده است.

تصویر ۱ - مراحل مختلف مدیریت لاگ
تصویر ۱ - مراحل مختلف مدیریت لاگ

قسمت های مختلف مدیریت لاگ

در تصویر ۱ به صورت خلاصه بعضی از مراحل مدیریت لاگ آورده شده است.

جمع آوری لاگ

این مورد مربوط به این است که لاگ‌ها چگونه جمع‌آوری و چگونه ذخیره شوند. از کجا و از کدام واحدهای نرم‌افزار لاگ جمع‌آوری شود و در کجا ذخیره شود. در این مرحله مهم است که اگر دیتای تکراری وارد لاگ شد، آن را نادیده و اضافی درنظر نگیرید و همه‌ اطلاعات مفید مرتبط با لاگ را حتماً جمع آوری کنید. البته این مورد نیاز به trade-off دارد و بستگی دارد چه مقدار از لاگ‌ها و کدامشان برای یک سیستم، حیاتی باشد.

جمع کردن لاگ‌ها به صورت مجتمع

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

تصویر ۲ - نمایی از جمع‌‌آوری لاگ به صورت مجتمع
تصویر ۲ - نمایی از جمع‌‌آوری لاگ به صورت مجتمع

ذخیره و نگهداری لاگ‌ها به مدت طولانی

مرحله بعدی در مدیریت لاگ‌ها، ذخیره‌سازی طولانی مدت و نگهداری آن‌هاست. ممکن است سوال پیش بیاید که این "طولانی" یعنی چه؟ به چه مدت باید لاگ را نگه داشت؟ در پاسخ باید به این نکته دقت شود که سازمان از چه به‌روش‌هایی استفاده می‌کند و لاگ‌ها تا چه مدت برای سازمان اهمیت دارند. پاسخ به این سوال می‌تواند کمکی برای تخمین مدت زمان نگهداری لاگ‌ها باشد.

تغییر وضعیت لاگ

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

آنالیز لاگ

آنالیز و تحلیل لاگ یکی از مهم‌ترین مراحل مدیریت لاگ است چرا که هر دیتایی زمانی معنی پیدا می‌کند و مهم می‌شود که روی آن تحلیلی انجام شود. ابزارهای مدیریت لاگ به صورت خودکار، تحلیل‌های پرکاربردی ارائه می‌دهند که در تحلیل آسان‌تر توسعه‌دهندگان یا مدیر پایش سیستم بسیار می‌تواند موثر باشد.

سرچ و گزارش لاگ

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

ابزارهای مهم مدیریت لاگ‌ها

ابزار Sentry

این ابزار برای مدیریت، لاگ‌گرفتن و تجمیع این لاگ‌ها در نرم‌افزارهای به خصوص اپلیکیشن‌های وب و موبایل استفاده می‌شود. این ابزار به تیم نرم‌افزاری کمک می‌کند که هر اروری که توسط زیرساخت اپ یا توسط کاربر یا موارد دیگر رخ داده را پایش و بررسی کنند. با استفاده از sentry بعید است که یک ارور حیاتی یا لاگ مهم، بسیار دیر توسط تیم نرم‌افزاری شناسایی شود و می‌تواند در بررسی میزان سلامت نرم‌افزار نیز موثر باشد. این ابزار دارای SDK های مختلف است که در پلتفرم‌های مختلف می‌تواند استفاده شود. هم‌چنین می‌تواند این ابزار را در سرور شخصی راه اندازی و استفاده کرد. این ابزار تا 10000 ارور در ماه برای نرم‌افزارها رایگان است.

ویژگی‌های مهم Sentry را می‌توان در موارد زیر خلاصه کرد:

  • گزارش ارور و باگ به صورت مفصل و با پارامترهای مختلف لازم برای تشخیص باگ
  • رابط کاربری گرافیکی برای شناسایی منشا ارورها و اینکه چگونه و در کجا باید آن‌ها را برطرف کرد.
  • فرستادن notification و هشدار معمولاً به صورت هفتگی یا روزانه به یک ایمیل مشخص
  • گزارش ارور به صورت real time و بلافاصله پس از استقرار نرم‌افزار

ابزارهای ELK

کلمه ELK مخفف سه واژه Elasticsearch و Logstash و Kibana (الستیک سرچ، لاگ‌استش و کیبانا) است. هر کدام از این سه ابزار متن‌باز را در ادامه توضیح می‌دهیم. این ابزارها جزو محبوب‌ترین ابزارهای موجود برای مدیریت و آنالیز لاگ‌ها و داده‌های مختلف هستند.

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

این ابزار برای تحلیل دیتای غیرساخت‌یافته بسیار پرکاربرد است.

اکنون به Elasticsearch بپردازیم. Elasticsearch محبوب‌ترین موتورجستجویی است که امروزه استفاده می‌شود و در واقع مهم‌ترین بخش و قلب ELK است. این ابزار هم یک ابزار رایگان و متن‌باز است که با جاوا نوشته شده است و دارای API های متعدد HTTP برای استفاده آسان‌تر جهت جستجوی سریع و کارا بین لاگ‌ها یا داده‌های مختلف است. این ابزار در زبان‌های مختلفی مانند پی‌اچ‌پی، پایتون و سی‌شارپ قابل استفاده است.

در میان ابزارهای ELK، ابزار Elasticsearch برای ایندکس کردن و ذخیره داده استفاده می‌شود به نحوی که خواندن از آن بسیار سریع و با نتایج مرتبط باشد. در واقع Elasticsearch را می‌توان یک دیتابیس NoSql دانست.

در هنگام استفاده از Elasticsearch می‌توان از کوئری‌های مختلف جهت ساخت، حذف، مشاهده و تغییر دیتا استفاده کرد که در این لینک می‌توانید خلاصه‌ای از آن‌ها را ببینید. هم‌چنین این ابزار دارای API های مختلف برای چاپ، کلاستر کردن، ایندکس کردن و سرچ کردن میان داده‌ها و لاگ‌ها است. برای این ابزار نیز مانند ابزار Logstash پلاگین‌های مختلفی وجود دارد که می‌توانند مواردی که توسط این ابزار قابل انجام هستند را گسترش دهند. به عنوان مثال برای گسترش API ها، مدیریت بهتر آن‌ها، مدیریت آسان‌تر امنیت لاگ‌ها و ایجاد هشدار و از این دست موارد، پلاگین‌های متعددی برای elasticsearch وجود دارد.

در نهایت به ابزار Kibana می‌رسیم. از این ابزار جهت داشتن داشبورد و هم‌چنین تحلیل و مشاهده و visual کردن لاگ‌ها و داده‌ها در میان ابزارهای ELK استفاده می‌شود. این ابزار برای نمایش داده و لاگ بسیار زیاد، مناسب‌ترین گزینه است و می‌تواند الگوها و قسمت‌های مختلف داده را تحلیل کند و بر مبنای تحلیل خود آن را نمایش دهد. هم‌چنین با استفاده از آن می‌توانید عملیات جستجو را انجام دهید که در واقع از elasticsearch برای این عمل استفاده می‌کند. امکان نمایش نمودارها و گراف‌های مختلف و امکان شخصی‌سازی آن به فردی که وظیفه بررسی لاگ‌ها را دارد امکان بررسی بسیار خوب و بصری لاگ‌ها و داده‌ها را می‌دهد.

تصویر ۳ - فرایند جمع‌آوری، ذخیره و نمایش دیتا در ELK
تصویر ۳ - فرایند جمع‌آوری، ذخیره و نمایش دیتا در ELK


باید توجه داشت که ابزارهای دیگری مانند splunk نیز وجود دارند که در زمینه مدیریت و سرچ و جمع‌آوری لاگ‌ها و دیتاها کاربردی است اما این ابزار به صورت متن باز در دسترس نیست.

شرکت‌های ایرانی خدمت دهنده در حوزه مدیریت لاگ

شرکت آتین

شرکت دانش بنیان آتین آتیه اندیش، مستقر در پارک علم و فناوری دانشگاه تهران، در سال 1396 فعالیت خود را به طور تخصصی در حوزه ارائه خدمات احراز هویت آغاز کرد. مدیریت لاگ‌ها و ممیزی‌ها یکی از چندین محصولات مختلف این شرکت است. از ویژگی‌های محصول ارائه شده در حوزه مدیریت لاگ توسط این شرکت، می‌توان به موارد زیر اشاره کرد:

  • ثبت خودکار رفتارهای کاربران و رخدادهای مرتبط
  • ثبت وقایع امنيتی تعریف شده در برنامه‌های کاربردی
  • امکان پیگیری وقایع و گزارش‌گیری
  • امکان نظارت بر عملکرد کلیه کاربران
  • محفوظ ماندن فعاليت كاربران از سايرين به جز مدیران سامانه

شرکت پلتکو

‏شرکت داده کاوان تصمیم یار خدمات مختلف نرم افزاری ارائه می‌دهد که یکی از آنها “پلتکو” نام دارد که “پلتفرم یکپارچه سازی و مدیریت وب سرویس” می‌باشد. در این پلتفرم تکنولوژی‌های قدیم و جدید مدیریت چرخه زندگی وب سرویس ادغام شده و به صورت یک خروجی واحد و کاملا شخصی سازی شده در اختیار سازمان‌ها قرار داده می‌شود. از مزایای نرم افزار مدیریت لاگ‌ها می‌توان به موارد زیر اشاره کرد:

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

منابع و لینک‌های مفید

https://www.elastic.co
https://authin.ir/log-management-and-auditing/
https://platco.ir/services/monitoring/log-manager/




این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.

loglog managementلاگمعماری_نرم_افزار_بهشتی
فلاتر دولوپر و دانشجوی ارشد نرم‌افزار
شاید از این پست‌ها خوشتان بیاید