Log Management Tools

سیاهه‌ها (Log ها) متون نیمه ساختار یافته‌ای هستند که توسط عبارات واقعه نگاری در کد منبع نرم افزاری تولید می‌شوند استاندارد جهانی برای چگونه نوشتن Logها وجود ندارد به همین دلیل نیمه ساختار یافته هستند. Log ها برای اهداف متفاوتی استفاده می‌شوند، برای مثال : جهت اشکل زدایی کد برنامه، پایش کارایی و امنیت سامانه‌ها و موتذد دیگر.امروزه Log ها از اهمیت بالایی برخوردار هستند زیرا اولین و تنها اطلاعات در دسترس برای مهندسن نرم افزار جهت شناسایی و اشکال زدایی سامانه‌های نرم افزاری هستند. امروزه به دلیل گسترش سامانه‌های نرم افزاری، اینترنت اشیا، محاسبات ابری، اهمیت در دسترس بودن همیشگی نرم افزارها و حجم بالای Logهای تولید شده، کنترل و مدیریت Log ها بسیار دشوار است به همین دلیل به ابزارهایی جهت مدیریت خودکار Log ها مانند Loggly ، Prelert و Splunk و همچنین ابزارهای متن بازی مانند GrayLog و LogStash نیاز داریم.رویدادها (Events) نشان دهنده‌ی فعالیت‌هایی هستند که منجر به تغییر وضعیت در یک سیستم می‌شوند. رویدادها تغییرات سیستم را به خوبی نشان می‌دهند. رویدادها همان Log های پردازش شده هستند.سیاهه (Log) داده‌هایی هستندکه طی اجرای نرم افزار تولید می‌شوند و اغلب برای فهم اطلاعات اضافی درباره فعالیت‌هایی حین اجرای نرم افزار را شامل می‌شوند. این فایل‌ها جهت عیب یابی مشکلات اجرایی مفید هستند. Log ها بصورت فایل‌های متنی ذخیره می‌شوند که این فایل‌ها قالب‌های مشخصی مانند Access.log و Error.log ذخیره می‌شوند. و با توجه به اینکه Log ها غیرساخت یافته هستند شاخص گذاری آن‌ها نیز دشوار است. Log ها انواع مختلفی دارند که به شرح زیر است :اطلاعاتی (Informational) : این نوع Log ها با هدف آگاه سازی کاربران و مدیران از جریان رخدادهایی است که خطری برای سیستم در حالت عادی ندارند. برای مثال ورود کاربران در ساعات کاری به یک سامانه، رخدادی معمول است اما اگر این ورود در ساعاتی غیر از ساعات کاری رخ دهد ممکن است نیاز به بررسی داشته باشد.اشکال زدایی (Debug) : Log های اشکال زدایی توسط نرم افزارها تولید می‌شوند. این Log ها به منظور کمک به توسعه دهندگان نرم افزار برای عیب یابی و تشخیص مشکلات کد برنامه، تولید می‌شوند.اخطار (Warning) : موقعیت‌هایی برای سیستم به وجود می‌آید که ممکن است برای انجام کارش نیازمند چیزی باشد که برایش فراهم نشده است اما باز هم می‌تواند به کارش ادامه دهد برای مثال اگر تعداد مناسبی آرگومان خط فرمان به یک برنامه داده نشود اما همچنان برنامه بتواند به درستی کارش را ادامه دهد، یک Log اخطاری برای کاربر یا اپراتور تولید می‌شود.خطا (Error) : این نوع از 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 انجام شده است. به همین دلیل تعدادی ابزار برای مدیریت Logبرای تسهیل چالش‌های دنیای واقعی در صنعت توسعه داده شده است. برخی از ابزارهای مدیریت مانند Syslog- ، Prometheus ، Logalyze ، Logstash ، Fluentd ، GoAccess ، GrayLog عبارتند از Logتحلیل ng ، و LogPAI . به طور معمول، این ابزار ها از ویژگی‌های مهم مانند جمع آوری Log، جستجو، مسیریابی، تجزیه، تصویر سازی ،هشدار دهی و تحلیل خودکار پشتیبانی می‌کنند.فرآیند مدیریت Log معروف‌ترین ابزارهای پرکاربرد مدیریت Log :1. SolarWinds Log Analyzerاین ابزار اشتراک یک ماهه رایگان جهت تست نرم افزار در اختیار کاربران قرار می‌دهد پس از آن باید هزینه مصرفی خود را پرداخت کنند. این نرم افزار به جمع بندی، برچسب‌ گذاری فیلتر کردن و تنظیم هشدار، ثبت گزارش event ها جست‌وجو و تجزیه و تحلیل Log ها می‌پردازد‌.از جمله ویژگی‌های این نرم افزار می‌توان به موارد زیر اشاره کرد : این ابزار با تجزیه و تحلیل Log ها دلیل ریشه‌ای مشکلات سیستم را گزارش می‌کند.این ابزار قابلیت جست‌وجو با استفاده از چندین پارامتر و معیار را جهت فیلتر کردن Log ها را می‌دهد.اعمال برچسب‌های مناسب برای ثبت Log ها.SolarWinds Log Analyzerنمایی از نرم افزارن2. ManageEngine EventLog Analyzerاین ابزار مناسب گزارش‌های سرورهای برنامه، پایگاه داده و سرورهای وب است که قابلیت یک ماه تست رایگان و تخفیفات مناسب برای خرید اشتراک را در اختیار کاربران قرار می‌دهد. این نرم افزار یک ابزار جامع برای مدیریت Log ها است یکی از قابلیت‌های بارز آن بایگانی کردن ایمن گزارش‌ها است که این عملیات را با استفاده از تکنیک‌های هش کردن و زمانبندی پیشرفته انجام می‌دهد. و حفاظت از سیستم را در برابر حملات داخلی و خارجی را با کیفیت بالا ارائه می‌کند. با توجه به تغییرات ایجاد شده در فایل‌ها و پوشه‌های مهم به سرعت هشدار مناسب تولید می‌کنند. از جمله ویژگی‌های این نرم افزار می‌توان به موارد زیر اشاره کرد :با کمک پایگاه داده Thread Intelligence ترافیک و IP مخرب وارد شده به ترافیک شما را به سرعت شناسایی و گزارش می‌دهد.قابلیت انواع جست‌وجو از جمله جست‌وجوی Boolean، جست‌وجوی گروهی و جست‌وجوی با پارامترهای خاص با سرعت بالا جهت یافتن Log های مناسب ارائه می‌کند.داده‌های حاصل از گزارش Log را در لحظه با یکدیگر تجمیع و هماهنگ می‌کند.ManageEngine EventLog Analyzerنمایی از نرم افزار 3. Sematext Logsاین ابزار برای هر کسب‌وکاری با هر مقیاس مناسب است و خرید اشتراک آن دارای سه سطح رایگان، استاندارد و حرفه‌ای است که با توجه به نیازهای تجاری، سطح و قیمت آن مشخص می‌شود. و ۱۴ روز امکان تست رایگان را در اختیار مشتریان می‌گذارد.این ابزار یک راه حل متمرکز جهت مدیریت گزارش‌های Log در فضای ابری جهت گزارشگیری از طیف گسترده‌ای از منابع داده را جمع آوری، ذخیره، فهرست بندی و در لحظه تحلیل و بررسی می‌کند همچنین قابلیت جست‌وجو و فیلتر مناسب برای DevOps ایجاد می‌کند.از جمله ویژگی‌های این نرم افزار می‌توان به موارد زیر اشاره کرد :قابلیت همبستگی انواع داده‌ها بصورت لحظه‌ای.توانی مدیریت حجم بالای داده‌ها.استفاده از Kibana برای رابط کاربری. قیمت گذاری مناسب و منعطف با توجه به حجم و برنامه کاربر بدون پرداخت هزینه اضافی. راه اندازی سریع و آسان جهت استفاده در فضای ابری و container ها.استفاده از ابزارهای محبوب و کتابخانه‌های مناسب جهت نمایش گزارش‌های Elasticsearch API.Sematext Logsنمایی از نرم افزار 4. Datadogاین نرم افزار یک سرویس نظارتی برای محیط‌های ابری ترکیبی است، که با جمع آوری eventها، پارامترهای لازم گزارش‌ها را با بیشتر از ۴۵۰ فناوری جمع آوری می‌کنند. همچنین گزارش‌های لازم را با داده‌های مرتبط که با سیاست‌های پویا جمع آوری شده از کل محیط برنامه، کاملا مقرون به صرفه تولید می‌کند همچنین سرعت عیب یابی را بالا می‌برد.از جمله ویژگی‌های این نرم افزار می‌توان به موارد زیر اشاره کرد :Datadogنمایی از نرم افزار 5. Splunkاین ابزار برای تمامی بیزینس‌های کوچیک و بزرگ مناسب است. Splunk برای مشتریان خود سه سطح دسترسی ارائه می‌کند یعنی Splunk Enterprise، Splunk Free و Splunk Enterprise است. نسخه های آزمایشی و رایگان برای Splunk Cloud و Splunk Enterprise در دسترس است که حجم محدود روزانه 500 مگابایت را در اختیار کاربران خود قرار می‌دهد.ابزار Splunk یک بستری برای دریافت Log های سیستم و تبدیل آن‌ها به پاسخ‌های مناسب است همچنین ویژگی‌هایی چون شاخص گذاری اطلاعات دریافتی از سیستم، جست‌وجو، همبستگی و بررسی Logها، تجزیه و تحلیل دقیق، نظارت و هشدار و گزارش است.همچنین قابلیت جمع آوری داده‌های تولید شده توسط سیستم‌ها، جست‌وجو، ذخیره، شاخص گذاری، همیشگی و تجزیه و تحلیل را برای کاربران خود فراهم می‌کند.ُُSplunkنمایی از نرم افزارامروزه حملات امنیتی قوی‌تر و پیچیده‌تر شده‌اند، Splunk کمک می‌کند تا عملیات امنیتی را در هر محیطی مدرن و با توجه به سبک حملات تنظیم کنید در نتیجه عملیات امنیتی کارآمد تر، چابک‌تر از رشد کسب‌وکار ها حمایت می‌کنند. همچنین کاربران انتظار دارند از اپلیکیشن‌ها و وب سایت‌هایی که استفاده می‌کنند عملکرد خوبی داشته باشند، پس سیستم‌ها باید انعطاف پذیر، در دسترس و کارآمد باشند تا توقعات کاربران را بر طرف کنند. Splunk یک نمای کلی و همزمان از سلامت و عملکرد تمام لایه‌های نرم افزار را ارائه می‌کند تا بتوانید به طور لحظه‌ای مشکلات سیستم را پیدا کنید و به سرعت مشکلات را رفع کنید تا عملکرد سیستم همیشه بالا باشد.ابزار Splunk داده‌ها را جهت اجرا و پیاده سازی امنیت، فناوری اطلاعات و دواپس استفاده می‌کند. Splunk را به عنوان گوگل برای پرونده‌های Log می‌شناسند که یک ابزار پیش روی دواپس نیز محسوب می‌شود. به طور کلی Splunk یک راه حل قدرتمند مدیریت Log و تجزیه و تحلیل آن و تمرکز خوبی بر مدیریت امنیت دارد. Splunk دارای سه مؤلفه اصلی است :هدایت کننده (Forwarder) : هدایت کننده یک فرآیند نرم افزاری Enterprise Splunk است که داده‌ها را از میزبان داده‌ی ماشین جمع آوری می‌کند. رایج ترین نوع هدایت کننده‌ی جهانی است که معمول در سیستم عامل‌های یونیکس و ویندوز نصب می‌شود. بر اساس پیکربندی، هدایت کننده‌ی جهانی، داده‌های ماشین را جمع آوری و به شاخص گذارها ارسال می‌کند. همچنین هدایت کننده‌های جهانی می‌توانند داده های جمع آوری شده‌ی ماشین را به نوع خاصی از هدایت کننده‌ها به نام هدایت کننده‌های سنگین ارسال کنند. بر خلاف هدایت کننده‌های جهانی، هدایت کننده‌های سنگین، داده‌ها را پیش از ارسال به شاخص گذارها تجزیه می‌کنند. علاوه بر این هدایت کننده‌های سنگین می‌توانند به صورت اختیاری داده‌ها را به صورت محلی شاخص گذاری کنند.شاخص گذار : یکی از فرآیندهای اصلی Enterprise Splunk است که داده‌های خام را به رویدادهای قابل جستجو تبدیل می‌کند و آنها را در شاخص‌ها ذخیره می‌کند. طی شاخص گذاری، شاخص گذار، داده‌های خام را به رویدادها تقسیم می‌کند، مهرزمانی (و چند ابر فیلد دیگر) را استخراج می‌کند و داده‌ها را روی دیسک می‌نویسد. همچنین فرآیندی که داده‌های شاخص شده را جستجو و بازیابی می‌کند، همین شاخص گذار است. در سامانه‌های یونیکس فرآیند شاخص گذار splunkd نامیده می‌شود. در یک محیط توزیع شده، شاخص گذاری، همتای جستجو نیز نامیده می‌شود. شاخص گذارها معمولا خوشه بندی می‌شوند و داده‌ها در بین اعضای خوشه تکرار می شوند.سر جستجو (Search head) : سر جستجو، جستجوهای انجام شده توسط کاربران را کنترل می کند. سر جستجو نیز یکی از فرآیندهای اصلی Enterprise Splunk است که از معماری کاهش نگاشتی استفاده می‌کند. درخواست‌های جستجو (مرحله‌ی نگاشت در کاهش نگاشتی) را بین گروهی از شاخص گذارها توزیع می کند که در آنجا جستجو ها اجرا می شوند. سر جستجو، نتایج جستجو را دریافت می کند و آنها را قبل از ارسال نتایج به کاربر، ادغام می‌کند (مرحله‌ی کاهش در کاهش نگاشتی). سرهای جستجو همچنین می‌توانند خوشه بندی شوند؛ خوشه‌های سر جستجو، از در دسترس بودن و تعادل بار بالا پشتیبانی می‌کنند، علاوه بر این به کنترل دسترسی به داده‌های شاخص شده نیز کمک می‌کنند. به طور معمول، هنگامی که به رابط وب 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 امکان شاخص گذاری هر نوع داده ناهمگن مقیاس پذیری افقی و عمودی پشتیبانی از چند زبان، پشتیبانی از موقعیت جغرافیایی امکان پالایش کردن و جستجو ی داده‌ها به منظور دستیابی به درک دقیق مقیاس پذیری و انعطاف پذیریمنابع : K. Subramanian. Practical Splunk Search Processing Language: A Guide for Mastering SPL Commands for Maximum Efficiency and Outcome. Apress, 2020. A. Nielsen. Practical Time Series Analysis: Prediction with Statistics and Machine Learning. O’Reilly Media, 1 ed. , 2019.A. Athick. Getting Started with Elastic Stack 8.0: Run powerful and scalable data platforms to search, observe, and secure your organization. Packt Publishing, 2022.K. J. S. Anton A. Chuvakin. Logging and log management: The authoritative guide to understanding the concepts surrounding logging and log management. Syngress, 1 ed. , 2012.S. He, J. Zhu, P. He, and M. R. Lyu, “Loghub: a large collection of system log datasets towards automated log analytics,” arXiv preprint arXiv:2008.06448, 2020. D. Cotroneo, L. De Simone, P. Liguori, R. Natella, and N. Bidokhti, “How bad can a bug get? an empirical analysis of software failures in the openstack cloud computing platform,” in Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp.200– 211, 2019.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»