مدیریت لاگ چیست ؟ + بررسی ابزار ها

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

لاگ چیست؟

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

15 FEB 2021 | 12:30:50 | ali@gmail.com | login

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

۱. زمان رخداد ۲.منبع (یعنی اون فرایند ، سیستم یا کاربری که باعث تولید لاگ شده ) ۳. داده لاگ : که گزارش اتفاق و هر اطلاعاتی در اون زمینه نیاز داریم است.

پس تا الان فهمیدیم فایل لاگ یه فایل (شاید متنی) هست که رخداد های مهم داخلش ثبت میشه

بعضی لاگ ها برای انسان ها نوشته میشن (مثل لاگ بالا) یعنی مثلا اگر من برنامه نویس یه اپلیکیشن نوشتم در حین برنامه یه مشکلی پیش اومد از برنامه افتادیم بیرون! میرم به فایل لاگ نگاه می‌کنم . از روی لاگ ها بررسی میکنم برنامه در چه شرایطی یا با چه سناریویی مشکل پیدا میکنه و بعد سعی میکنم برنامه رو اصلاح کنم تا در اون شرایط دیگه مشکل پیدا نکنه. خلاصه این نوع لاگ ها ساده هستند و انسان ها میتونن بخونن و با یک برنامه ویرایشگر متن (مثل notepad) قابل خوندن هستند.

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

بسیاری از لاگ ها هم برای اینکه سیستم یا برنامه یا ابزارها اونا رو بررسی کنن ساخته میشن در این شرایط این لاگ ها رو ما نمیتونیم بخونیم (در اصطلاح human readable نیست) و ممکنه این فایل ها به صورت باینری ساخته شوند.

چرا لاگ نیاز به مدیریت دارند؟

لاگ ها اطلاعات بسیار زیادی با خود به همراه دارند. در واقع آنها ریز عملکرد سامانه ما هستند. اگر این اطلاعات به درستی استخراج شود برای توسعه دهنگان ، تیم زیرساخت بسیار مفید است . حتی اگر ماطلاعات بصورت آماری و تصویر سازی شود میتواند نگاه جامعی به مدیران محصول بدهند. برای کارشناسان امنیت در تست نفوذ ، امنیت شبکه و .. لاگ ها مهمترین منبع اطلاعاتی هستند . در مراکز بزرگ یا نظامی شاید سامانه هایی دیده باشید که وضعیت سرور یا سرویس ها را در لحظه (real time) پایش میکند و اطلاعات در یک داشبورد نمایش میدهد. جالب است بدانید در بسیاری موارد این اطلاعات از لاگ ها استخراج میشوند. و با ابزار ها بصورت تصویری نمایش داده میشوند. (برای نمونه به شکلی که در چند خط پایین تر آمده نگاه کنید )

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

تمام فعالیت ها و فرآیند ها لازم برای تولید، جمع آوری ، استخراج اطلاعات و ذخیره و نگهداری این حجم عظیم داده، (به نام لاگ ) را با مفهوم کلی مدیریت لاگ (log management) معرفی میکنند.


داشبورد سامانه اطلاعات امنیتی و مدیریت رویداد (SIEM) - ایجاد شده توسط ابزار مدیریت لاگ ELK
داشبورد سامانه اطلاعات امنیتی و مدیریت رویداد (SIEM) - ایجاد شده توسط ابزار مدیریت لاگ ELK


وظایف ابزار های مدیریت لاگ :

پس مدیریت لاگ براساس تعریف انجمن ملی استانداردها و فناوری ها (NIST) باید بخش های زیر داشته باشد:

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

ابزار های معروف در حوزه مدیریت لاگ

حالا که با وظایف اصلی ابزار های مدیرت لاگ آشنا شدیم بیاید نگاهی ابزار های معروف در این حوزه بندازیم :

  1. ابزار ELK

عبارت ELK مخفف شده سه کلمه Elasticseach، Logstash و Kibana است. این سه تکنولوژی متن باز (open source) در کنار هم توانسته اند به یکی از بهترین و محبوب ترین ابزار های مدیریت لاگ تبدیل شوند.

ELK
ELK
  • الستیک سرچ : یک ابزار تحلیل و موتور جستجوی متن باز بسیار قدرمتند است
  • ابزار Logstash : رویداد ها بصورت آنلاین از تکنولوژی های مختلف میگیره و پرداش میکنه و در الستیک سرچ ذخیره میکنه
  • ابزار Kibana : امکان تحلیل داده‌های ذخیره شده در الستیک و همچنین ایجاد داشبورد و ساخت نمودارهای مختلف را رو به ما میده.
  • ابزار Beats : معمولا ابزار Beats به کمک پشته ELK می آید. این ابزار وظیفه جمع آوری لاگ ها و ارسال آن به یک سرور دارد

در شکل بالا ترتیب استفاده از ابزار ها را میبنیم Beats لاگ ها را جمع آوری و به یک سرور ارسال میکنه توسط Logstash این لاگ ها پردازش و سپس برای استفاده Elasticsearch ذخیره میشه. سپس با کمک الستیک به سرعت بر روی لاگ ها جستجو و نتایج را برای مصور سازی به kibana تحویل میده

۲. ابزار Graylog

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

این ابزار با ابزار های دیگر مانند MongoDB برای بیگ دیتا و Elasticsearch که همونطور که بالاتر گفتیم برای نگه داشتن Log ها و فعال کردن جستجو متن استفاده می شه.یکپارچه سازی شده و باید آنها را هم در کنار این ابزار نصب کنیم.

محیط graylog
محیط graylog

۳. ابزار Sentry

یکی از ابزار open-source مدیریت لاگه که از سراسر برنامه به صورت در لحظه (real time) خطاها را جمع آوری می ‌کنه تا توسعه دهندگان به راحتی بتوانند این خطا ها را برطرف کنند. این ابزار هر خطایی را که در برنامه بوجود آمده باشد را با جزئیات نمایش داده و خطاها را از طریق ایمیل، پیام کوتاه، Slack و ... در اختیار کاربرانش قرار می ‌دهد.
یکی از مزیت های اصلی این ابزار پشتیبانی از بسیاری از زبان های برنامه نویسی از قبیل :Javascript, Python, Ruby, Node, Go, Android, Php و ... و همچنین بسیاری از فریم ورک ها از قبیل:React, Django, Rails, Angular, Laravel, Swift, Vue و ...است .

سادگی و انعطاف پذیری و قابلیت ادغام با دیگر برنامه ها این ابزار باعث شده به ادعای سازنده بیش از 60 هزار سازمان و بیش از ۱ میلیون برنامه نویس به طور فعال از این ابزار استفاده میکنند

داشبورد Centry
داشبورد Centry


شرکت ایرانی ارائه دهنده ابزار های مدیریت لاگ

شرکت داده کاوان تصمیم یار:

یکی از شرکت هایی که در حوزه مدیریت لاگ خدکات ارائه میکند داده کاوان تصمیم یار (کوالاتک) نام دارد

شرکت داده کاوان تصمیم یار خدمات مختلف نرم افزاری ارائه می‌دهد که یکی از آنها “پلتکو” نام دارد که “پلتفرم یکپارچه سازی و مدیریت وب سرویس” می‌باشد.

پلتکو لاگ‌های سازمان به صورت خودکار جمع آوری میکند و طبق نیاز سازمان، دسته بندی‌های لازم برای هر لاگ انجام میده (با ابزار Beat) سپس متناسب با نیازهای هر سازمان، لاگ‌ها را به داده تبدیل می‌کنه .


همچنین مدیر یا کاربر با سرعت لاگ مورد نظر خودشو جستجو کنه و بهش دسترسی پیدا کنه (با کمک الستیک سرچ)

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

همونطور که مشخصه این شرکت تقریبا تمام سرویس های ضروریمدیریت لاگ رو در اختیار کاربرانش قرار میده .

آتین :

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

این شرکت خود را اینگونه معرفی میکند :

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

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

این سامانه هم رفتار های کاربران و رخداد مرتبط رو ثبت میکنه و امگان پیگیری و گزارش گیری رو به فراهم میکنه


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


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


منابع :

https://www.graylog.org/post/what-is-log-management-a-complete-logging-guide#:~:text=Log%20management%20is%20an%20umbrella,of%20computer-generated%20log%20data.
https://en.wikipedia.org/wiki/Log_management
http://tecmint.ir/2018/06/13/%DB%B4-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-%D9%85%D8%AA%D9%86-%D8%A8%D8%A7%D8%B2-%D9%85%D8%A7%D9%86%DB%8C%D8%AA%D9%88%D8%B1%DB%8C%D9%86%DA%AF-log-%D9%87%D8%A7-%D9%88-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA/
https://medium.com/@ibrahim.ayadhi/visualizing-dashboards-and-elk-siem-c4a669f3fae8
https://platco.ir/
https://qualatech.ir/
https://authin.ir/
https://sentry.io/