سیاههها (Log ها) متون نیمه ساختار یافتهای هستند که توسط عبارات واقعه نگاری در کد منبع نرم افزاری تولید میشوند استاندارد جهانی برای چگونه نوشتن Logها وجود ندارد به همین دلیل نیمه ساختار یافته هستند. Log ها برای اهداف متفاوتی استفاده میشوند، برای مثال : جهت اشکل زدایی کد برنامه، پایش کارایی و امنیت سامانهها و موتذد دیگر.
امروزه Log ها از اهمیت بالایی برخوردار هستند زیرا اولین و تنها اطلاعات در دسترس برای مهندسن نرم افزار جهت شناسایی و اشکال زدایی سامانههای نرم افزاری هستند. امروزه به دلیل گسترش سامانههای نرم افزاری، اینترنت اشیا، محاسبات ابری، اهمیت در دسترس بودن همیشگی نرم افزارها و حجم بالای Logهای تولید شده، کنترل و مدیریت Log ها بسیار دشوار است به همین دلیل به ابزارهایی جهت مدیریت خودکار Log ها مانند Loggly ، Prelert و Splunk و همچنین ابزارهای متن بازی مانند GrayLog و LogStash نیاز داریم.
رویدادها (Events) نشان دهندهی فعالیتهایی هستند که منجر به تغییر وضعیت در یک سیستم میشوند. رویدادها تغییرات سیستم را به خوبی نشان میدهند. رویدادها همان Log های پردازش شده هستند.
سیاهه (Log) دادههایی هستندکه طی اجرای نرم افزار تولید میشوند و اغلب برای فهم اطلاعات اضافی درباره فعالیتهایی حین اجرای نرم افزار را شامل میشوند. این فایلها جهت عیب یابی مشکلات اجرایی مفید هستند. Log ها بصورت فایلهای متنی ذخیره میشوند که این فایلها قالبهای مشخصی مانند Access.log و Error.log ذخیره میشوند. و با توجه به اینکه Log ها غیرساخت یافته هستند شاخص گذاری آنها نیز دشوار است. Log ها انواع مختلفی دارند که به شرح زیر است :
پس برای Log ها باید عملیات Logging را جهت جمع آوری سابقه رخدادها در پروندههای Log که شامل ذخیره سازی ورودیهای Logبه صورت پروندههای متنی، ذخیره سازی رکورد دادههای ممیزی درون پروندههای باینری و یا پایگاههای داده را Logging میگویند. Logging انواع مختلفی مانند : واقعه نگاری امنیتی (Security logging) ، واقعه نگاری عملیاتی (Operational logging)، واقعه نگاری انطباقی (Compliance logging) و واقعه نگاری اشکال زدایی برنامه ی کاربردی (Application debug logging) .
پس انجام Logging و جمع آوری Logها به شکل مرکزی، به دلیل حجم زیاد این دادهها که هر لحظه به حجمشان نیز اضافه میشود، نیازمند راه حلهایی برای فشرده کردن این اطلاعات هستیم تا به این ترتیب حجم کمتری را اشغال کنند و باعث کاهش کارایی سامانه نشوند و به نحوی باشند که باعث از دست رفتن اطلاعات مفید طی فرآیند فشرده سازی Logنشوند.
تحلیل Log :
از داده کاوی و روشهای یادگیری ماشین برای کاوش و تحلیل خودکار حجم زیادی از دادههای Log جهت جمع آوری الگوهای معنادار و روندهای آموزنده استفاده میکنند. الگوها و دانش استخراج شده میتوانند پایش، مدیریت و عیب یابی سامانههای نرم افزاری را هدایت و تسهیل کند. در این بخش، ابتدا چالش هایی را که در تحلیل Log با آن مواجه میشویم را توضیح میدهیم، سپس، جریان کار کلی تحلیل Log را شرح می دهیم.
چالشهای Log
بهطور سنتی مهندسان، برای استخراج Logهای مشکوک که ممکن است باعث بروز مشکلات نرم افزاری مانند خرابی مولفهها باشند، با یک جستوجوی ساده کلیدواژههایی مانند Error، Exception و Failed را اجرا میکنند. و یا با استفاده از برخی ابزارهای مبتنی بر قاعده جهت تشخیص مشکلات نرم افزاری که از مقایسه Logها و یا مجموعهای قوانین که بهصورت دستی توسط انسان تعریف شده است توسعه یافتهاند. ولی امروزه به دلیل گسترش روز افزون حجم، تنوع سرعت Logهای تولید شده چنین رویکردهایی به دلیل نیازمندی به تعداد نیروی انسانی بالا مستعد خطا هستند کافی نیستند.
همچنین Log های مشکوک اغلب در میان حجم زیادی از Log ها که در طول اجرای عادی نرم افزار تولید میشوند گم میشوند. جستوجوی دستی در میان حجم بالای Log ها کار معقولی نیست. علاوه بر این، به دلیل پیچیدگی بالای سامانههای نرم افزاری مدرن، خرابیها میتواند ناشی از منابع مختلف نرم افزاری و سخت افزاری باشد، همچنین شناسایی سریع علت اصلی با بررسی Log ها نیازمند تخصص و تجربه بالای مهندسان است.
جریان کاری رایج تحلیل Log :
جریان کاری کلی تحلیل Logدر شکل زیر نمایش داده شده است. این جریان کاری معمولا از چهار مرحله تشکیل میشود که شامل تفکیک Log ، استخراج ویژگی، آموزش مدل، و استقرار آنلاین است.
ابزارها و مجموعه دادههای متن باز :
در سالهای اخیر، مطالعات تحقیقاتی زیادی بر روی تحلیل خودکار Log انجام شده است. به همین دلیل تعدادی ابزار برای مدیریت Logبرای تسهیل چالشهای دنیای واقعی در صنعت توسعه داده شده است. برخی از ابزارهای مدیریت مانند Syslog- ، Prometheus ، Logalyze ، Logstash ، Fluentd ، GoAccess ، GrayLog عبارتند از Logتحلیل ng ، و LogPAI . به طور معمول، این ابزار ها از ویژگیهای مهم مانند جمع آوری Log، جستجو، مسیریابی، تجزیه، تصویر سازی ،هشدار دهی و تحلیل خودکار پشتیبانی میکنند.
معروفترین ابزارهای پرکاربرد مدیریت Log :
1. SolarWinds Log Analyzer
این ابزار اشتراک یک ماهه رایگان جهت تست نرم افزار در اختیار کاربران قرار میدهد پس از آن باید هزینه مصرفی خود را پرداخت کنند. این نرم افزار به جمع بندی، برچسب گذاری فیلتر کردن و تنظیم هشدار، ثبت گزارش event ها جستوجو و تجزیه و تحلیل Log ها میپردازد.
از جمله ویژگیهای این نرم افزار میتوان به موارد زیر اشاره کرد :
2. ManageEngine EventLog Analyzer
این ابزار مناسب گزارشهای سرورهای برنامه، پایگاه داده و سرورهای وب است که قابلیت یک ماه تست رایگان و تخفیفات مناسب برای خرید اشتراک را در اختیار کاربران قرار میدهد. این نرم افزار یک ابزار جامع برای مدیریت Log ها است یکی از قابلیتهای بارز آن بایگانی کردن ایمن گزارشها است که این عملیات را با استفاده از تکنیکهای هش کردن و زمانبندی پیشرفته انجام میدهد. و حفاظت از سیستم را در برابر حملات داخلی و خارجی را با کیفیت بالا ارائه میکند. با توجه به تغییرات ایجاد شده در فایلها و پوشههای مهم به سرعت هشدار مناسب تولید میکنند.
از جمله ویژگیهای این نرم افزار میتوان به موارد زیر اشاره کرد :
3. Sematext Logs
این ابزار برای هر کسبوکاری با هر مقیاس مناسب است و خرید اشتراک آن دارای سه سطح رایگان، استاندارد و حرفهای است که با توجه به نیازهای تجاری، سطح و قیمت آن مشخص میشود. و ۱۴ روز امکان تست رایگان را در اختیار مشتریان میگذارد.
این ابزار یک راه حل متمرکز جهت مدیریت گزارشهای Log در فضای ابری جهت گزارشگیری از طیف گستردهای از منابع داده را جمع آوری، ذخیره، فهرست بندی و در لحظه تحلیل و بررسی میکند همچنین قابلیت جستوجو و فیلتر مناسب برای DevOps ایجاد میکند.
از جمله ویژگیهای این نرم افزار میتوان به موارد زیر اشاره کرد :
4. Datadog
این نرم افزار یک سرویس نظارتی برای محیطهای ابری ترکیبی است، که با جمع آوری eventها، پارامترهای لازم گزارشها را با بیشتر از ۴۵۰ فناوری جمع آوری میکنند. همچنین گزارشهای لازم را با دادههای مرتبط که با سیاستهای پویا جمع آوری شده از کل محیط برنامه، کاملا مقرون به صرفه تولید میکند همچنین سرعت عیب یابی را بالا میبرد.
از جمله ویژگیهای این نرم افزار میتوان به موارد زیر اشاره کرد :
5. Splunk
این ابزار برای تمامی بیزینسهای کوچیک و بزرگ مناسب است. Splunk برای مشتریان خود سه سطح دسترسی ارائه میکند یعنی Splunk Enterprise، Splunk Free و Splunk Enterprise است. نسخه های آزمایشی و رایگان برای Splunk Cloud و Splunk Enterprise در دسترس است که حجم محدود روزانه 500 مگابایت را در اختیار کاربران خود قرار میدهد.
ابزار Splunk یک بستری برای دریافت Log های سیستم و تبدیل آنها به پاسخهای مناسب است همچنین ویژگیهایی چون شاخص گذاری اطلاعات دریافتی از سیستم، جستوجو، همبستگی و بررسی Logها، تجزیه و تحلیل دقیق، نظارت و هشدار و گزارش است.
همچنین قابلیت جمع آوری دادههای تولید شده توسط سیستمها، جستوجو، ذخیره، شاخص گذاری، همیشگی و تجزیه و تحلیل را برای کاربران خود فراهم میکند.
امروزه حملات امنیتی قویتر و پیچیدهتر شدهاند، Splunk کمک میکند تا عملیات امنیتی را در هر محیطی مدرن و با توجه به سبک حملات تنظیم کنید در نتیجه عملیات امنیتی کارآمد تر، چابکتر از رشد کسبوکار ها حمایت میکنند.
همچنین کاربران انتظار دارند از اپلیکیشنها و وب سایتهایی که استفاده میکنند عملکرد خوبی داشته باشند، پس سیستمها باید انعطاف پذیر، در دسترس و کارآمد باشند تا توقعات کاربران را بر طرف کنند. Splunk یک نمای کلی و همزمان از سلامت و عملکرد تمام لایههای نرم افزار را ارائه میکند تا بتوانید به طور لحظهای مشکلات سیستم را پیدا کنید و به سرعت مشکلات را رفع کنید تا عملکرد سیستم همیشه بالا باشد.
ابزار Splunk دادهها را جهت اجرا و پیاده سازی امنیت، فناوری اطلاعات و دواپس استفاده میکند. Splunk را به عنوان گوگل برای پروندههای Log میشناسند که یک ابزار پیش روی دواپس نیز محسوب میشود. به طور کلی Splunk یک راه حل قدرتمند مدیریت Log و تجزیه و تحلیل آن و تمرکز خوبی بر مدیریت امنیت دارد. Splunk دارای سه مؤلفه اصلی است :
ابزار Splunk از یک زبان جستجو به نام زبان پردازش جستجو برای پیمایش و پیاده سازی پرسوجوهای بزرگ استفاده میکند. با کمک ،Splunk کاربران میتوانند تجزیه و تحلیل امنیتی موثری را بر روی پروندههای Log متنوعی که از محیطها و سامانههای مختلف جمع آوری شدهاند، انجام دهند. کاربران میتوانند با تولید نمودارهای مختلف، گرافها، هشدارها و غیره، بینش بیشتری در مورد اطلاعات Log به دست آورند. یکی از نقاط قوت فروش منحصر به فرد Splunk قابلیت پردازش بلادرنگ آن است. کاربران میتوانند دادههای ورودی خود را در هر قالبی که میخواهند داشته باشند. Splunk را میتوان طوری پیکربندی کرد که هر زمان که شروع به کار کرد، هشدارها و اعلانهای مرتبط را نشان دهد. برای اطمینان از مقیاس پذیری مناسب، میتوان از پیش بینی دقیق منابع که Splunk در اختیار کاربران قرار می دهد، استفاده کرد. یکی دیگر از ویژگیهای Splunk این است که می توان اشیاء دانش برای استفاده از هوش عملیاتی استفاده کرد.
محصول ElK Stack چیست ؟
ابزار ELK مخفف سه پروژه متن باز: ،Elasticsearch Logstash ،و Kibana است که البته پروژهی Beats نیز به آن اضافه شده است.
Elasticsearch :
یک موتور جستجوی متن کامل و یک مخزن دادهی همه کاره است. Elasticsearch علاوه بر اینکه دادهها را ذخیره میکند، به شما امکان را میدهد تا به سرعت تجمیع از دادهها را بر روی حجم زیادی از دادهها جستجو و محاسبه کنید.
Kibana :
یک رابط کاربری برای Elasticsearch فراهم میکند. کاربران میتوانند با استفاده از این ابزار نمودارها را جستجو و ایجاد کنند،علاوه بر این Elasticsearch را مدیریت میکند. همچنین راه حلهای از پیش آمادهای را در قالب برنامه، برای موارد استفادهای مانند جستجو، امنیت و قابلیت مشاهده ارائه میدهد.
Beats :
میتواند برای جمع آوری و ارسال مستقیم دادهها از طیف وسیعی از سامانههای منبع (مانند انواع مختلف نقاط پایانی، تجهیزات شبکه و زیرساخت، یا منابع API مبتنی بر ابر) به Logstash یا -Elastic search استفاده شود.
Logstash :
یک ابزار Extract ،Transform ،Load) ETL)است که برای پردازش و ورود دادهها از منابع مختلف (مانند پروندههای Log روی سرورها، عاملهای Beats در محیط شما، یا صفهای پیام و سکوهای جریانی) به Elasticsearch استفاده میشود.
ابزار Elasticsearch اغلب به عنوان یک موتور جستجوی توزیع شده توصیف میشود که میتواند برای جستجو و تجمیع حجم عظیمی از دادهها استفاده شود. برخی Elasticsearch را به عنوان یک موتور تجزیه و تحلیل توصیف میکنند، در حالی که برخی دیگر از اصطلاح ذخیرهی اسناد یا پایگاه دادهي NoSQL استفاده کردهاند. دلیل تعاریف گسترده برای Elasticsearch این است که یک محصول کامل انعطاف پذیر است. می توان از آن برای ذخیرهی اسناد JSON ، با یا بدون یک طرح از پیش تعریف شده ( مجاز برای دادههای بدون ساختار) استفاده کرد. میتوان از آن برای محاسبهی تجمیع در مقادیر سند (برای محاسبهی معیارها یا گروه بندی دادهها در سطلها) استفاده کرد، علاوه بر این میتوان از آن برای اجرای جستجوی مرتبط و آزاد از متن بر روی یک مجموعه بزرگ استفاده کرد. Elasticsearch بر روی Apache Lucene که یک کتابخانهی جستجوی کامل متنی محبوب و سریع برای برنامههای جاوا است، ساخته شده است. Lucene به هیچ وجه توزیع پذیر نیست. منابع و درخواستها را به شکل ذاتی مدیریت نمیکند. Elasticsearch پیچیدگیها و ریزه کاریهای کار مستقیم با کتابخانههایی مانند Lucene را با ارائهی API های کاربرپسند برای کمک به شاخص گذاری، جستجو و تجمیع دادهها، از بین می برد.
همچنین مفاهیمی را معرفی میکند که به شرح زیر هستند:
ویژگیهای کلیدی Stack ELK
منابع :
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»