احسان رزازیان
احسان رزازیان
خواندن ۱۰ دقیقه·۳ سال پیش

ابزارهای مدیریت Log در نرم افزار

مقدمه:

امروزه بسیاری از افراد و شرکت برای هدف های مختلفی از ابزار های مدیریت Log یا همان Log Management Tool ها در صنعت نرم افزار استفاده می کنند. در این پست قصد داریم تا با کاربرد ابزار های مدیریت Log آشنا شویم و نمونه ای از این ابزار ها را معرفی کنیم. تا کنون ابزار های زیادی برای این منظور ساخته شده اند، یکی از معروف ترین ابزار ها در این حوزه ELK است که آن را به طور مفصل تر معرفی خواهیم کرد.

توضیح ابزار های مدیریت Log و کاربرد آن:

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

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

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

نمونه لاگ های یک برنامه
نمونه لاگ های یک برنامه

لاگ هایی که در این ابزار های مدیریت لاگ ذخیره می شوند، در آینده کاربرد های زیادی خواهند داشت. از جمله این کاربردها می توان به:

عیب یابی سریع: اگر خطایی در سیستم رخ دهد، به سادگی با مرور Log های تولید شده می توان علت خطا و منبعی که باعث تولید آن خطا شده است را شناسایی کرد.

بالا رفتن امنیت: می توان دید که چه اشخاصی از چه برنامه هایی و در چه زمان هایی استفاده کرده اند و آیا دسترسی های آنان به صورت قانونی بوده است یا خیر.

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

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

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

و غیره اشاره کرد.

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

ابزار های متن باز (Open Source) برای مدیریت لاگ:

تعداد ابزار هایی که تا کنون برای مدیریت لاگ ها ساخته شده اند بسیار زیاد است و ابزار های متنوع و گوناگونی وجود دارد. در ادامه همین پست چند مورد از آن ها را برسی خواهیم کرد:

ابزار ELK:

ابزار ELK در واقع ترکیبی از 3 برنامه Elasticsearch و Logstash و Kibana است که هر کدام از آن ها کاربرد خاص خودشان دارند. این ابزار یک ابزار جامع متن باز برای جمع آوری، جستجو و آنالیز لاگ ها است. در شکل زیر اجزای این ابزار نمایش داده شده اند:

جزییات ابزار ELK
جزییات ابزار ELK

همانطور که در شکل فوق مشاهده می شود، ابزار ELK که یک ابزار مدیریت لاگ است به طور کلی از 4 بخش عمده تشکیل شده است. در کلمه ELK، حرف E به معنای Elasticsearch و حرف L به معنی Logstash و حرف K به معنی Kibana است که در ادامه با جزییات آن ها آشنا می شویم.

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

در قسمت بعد، این لاگ ها به کمک Logstash (که خودش یک ابزار رایگان و منبع باز است) جمع آوری و پردازش می کند و به خروجی مورد نظر برای مرحله بعد تبدیل می کند. داده ها می توانند از سرورهای راه دور با استفاده از ابزاری به نام "beats" به Logstash ارسال شوند. به طور کلی وظیفه Logstash در اینجا جمع آوری لاگ های مختلف از جاهای مختلف سیستم است. بعد از این که داده ها توسط Logstash جمع آوری شد، همان logstash می تواند یک سری فیلتر روی لاگ ها نیز انجام بدهد و سپس خروجی را به Elasticsearch ارسال می کند. مزیت logstash این است که می تواند لاگ های مختلف با فرمت های مختلف را از منابع مختلف جمع آوری و فیلتر کند.

در مرحله بعدی Elasticsearch قرار دارد. ابزار Logstash یک ابزار متن باز است که به کمک جاوا در سال 2010 و بر مبنای Restful Api توسعه داده شده است. این ابزار به نوعی یک موتور جستجو و همچنین یک آنالیزور است که می تواند هم با داده های ساختار یافته و هم با داده های غیر ساختار یافته کار کند. این ابزار قابلیت این را دارد تا جستجو روی داده ها را با سرعت زیادی انجام بدهد. به کمک Elasticsearch می توان حجم زیادی از داده ها را ذخیره کرد و روی آن ها جستجوی سریع انجام داد. در این جا داده ها همان لاگ ها هستند. در این ابزار داده ها با فرمت JSON ذخیره می شوند و می توانند به هر زبانی (انگلیسی، آلمانی یا ...) باشند.

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

نمونه ای از صفحات Kibana
نمونه ای از صفحات Kibana

همانطور که در شکل فوق مشخص است، Kibana آمار و آنالیز های مختلفی را به کمک Elasticsearch ارائه می دهد. به عنوان مثال نشان می دهد که چه درصدی از بازدید کنندگان دارای چه سیستم عامل هایی هستند. همچنین می توان لیست لاگ ها را نیز در این داشبورد نگاه کرد. این ابزار قابلیت های فراوانی دارد، مثلا می توان از لیست لاگ ها گزارش در قالب اکسل تهیه کرد.

ابزارهای متن باز دیگری نیز برای مدیرت لاگ وجود دارند که معروف ترین آن ها عبارت اند از:

ابزار Graylog:

این ابزار در سال 2009 ساخته شد و از پایگاه داده MongoDB برای ذخیره سازی لاگ ها استفاده می کند. این برنامه قابلیت های زیادی برای برنامه نویسان فراهم کرده است که باعث شده تا جذاب بشود، مثلا اطلاعاتی نظیر زمان هایی که Request ها بیشتر است یا خطاهایی که رخ داده می دهد و همچنین یک سری پیشنهاد برای تغییر دادن کد جهت بالا رفتن کارآیی میدهد. از جمله معایب این ابزار می توان به این مورد اشاره کرد که در سیستم عامل ویندوز قابل نصب و استفاده نیست.

ابزار Fluentd:

این ابزار به زبان C نوشته شده است و مستقل از سکو است، یعنی روی تمام سیستم عامل ها از جمله ویندوز و لینوکس اجرا می شود و تحت لیسانس Apache 2.0 است. همچنین این ابزار از قالب JSON برای ساختار دادن به داده استفاده می کند. از جمله مزایای این ابزار می توان به کم حجم بودن آن و انعطاف پذیر بودن آن در تعداد کاربران استفاده کننده از آن اشاره کرد.

ابزار NXlog:

این ابزار این قابلیت را دارد که گزارش‌های رویدادها را از نقاط متعدد در قالب‌های مختلف از جمله Syslog جمع‌آوری کند. می‌توان NXlog را در دو نسخه دانلود کرد: نسخه Community که دانلود و استفاده از آن رایگان است و نسخه Enterprise یا سازمانی که باید برای کار کردن با آن اشتراک خرید. همچنین این ابزار قابل نصب روی سیستم عامل های معروف است و محدود به یک سیستم عامل نیست.

البته ابزار های دیگری نیز وجود دارند اما معروف ترین آن ها همین ابزار هایی بود که با هم دیدیم.

شرکت های ایرانی ارائه دهنده خدمات در زمینه Log Management:

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

پلتکو:

پلتکو یک شرکت دانش بنیان است که در زمینه های مختلفی مانند: "معماری و یکپارچه سازی"، "نظارت و کنترل" و" مستندسازی و گزارش دهی" فعالیت می کند. یکی از محصولات این شرکت ابزار مدیریت لاگ است.

جزییات این ابزار را می توانید در این لینک ببینید. پلتکو درباره ضرورت استفاده از ابزار های مدیریت لاگ در سایت خود چنین گفته است:

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

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

برای رفتن به صفحه اصلی سایت پلتکو کلیک کنید.

کوالاتک:

شرکت کوالاتک در زمینه تست اتوماتیک نرم افزار و تضمین کیفیت فعالیت دارد.

جزییات ابزار مدیریت لاگ شرکت کوالاتک را می توانید در این لینک ببینید.

کوالاتک درباره ضرورت استفاده از ابزار های مدیریت لاگ در سایت خود چنین گفته است:

وقتی حجم نرم افزار کوچک است مشکلی نیست اما وقتی نرم افزار بزرگ و پیچیده است پیدا کردن مشکل کار بسیار سخت و زمان بری است، برای همین باید از ابزاری استفاده کرد تا در این موضوع به برنامه نویسان کمک کند که آن ابزار را مدیریت لاگ (یا Log Management) گویند.

از جمله مزایای ابزار مدیریت لاگ پلتکو می توان به قابلیت هایی نظیر: تبدیل لاگ به داده، گزارش گیری، مانیتورینگ و هشدار اشاره کرد.

برای رفتن به صفحه اصلی سایت کوالاتک کلیک کنید.

آتین:

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

آتین درباره ضرورت استفاده از ابزار های مدیریت لاگ در سایت خود چنین گفته است:

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

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

جمع بندی:

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

منابع:

[1] وبسایت https://stackify.com/best-log-management-tools

[2] وبسایت https://www.softwaretestinghelp.com/log-management-software

[3] وبسایت https://www.elastic.co/what-is/elk-stack

[4] وبسایت https://www.guru99.com/elk-stack-tutorial.html#1

[5] وبسایت 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/

[6] وبسایت https://www.linuxhowto.net/5-most-notable-open-source-centralized-log-management-tools/

[7] وبسایت https://platco.ir/services/monitoring/log-manager

[8] وبسایت https://qualatech.ir/log-management

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




معماری_نرم_افزار_بهشتیlogنرم افزار
شاید از این پست‌ها خوشتان بیاید