مدیریت لاگ

بابک احمدی
در تاریخ: ۲۱ فروردین، ۱۳۹۸

امروز قرار هست با مفهوم Log Management یا مدیریت لاگ آشنا شویم. مفهومی که این روزها بیشتر شنیده می‌شود و کاربردهای متفاوتی برایش تعریف می‌شود.

روند مدیریت لاگ در طول زمان

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

اما امروز چطور؟

بیایید یک مثال را در نظر بگیریم،

شما یک نرم افزار دارید که شامل 20 میکروسرویس RESTful هست که بر روی چندین سرور مختلف قرار دارد، چندین کانتینر (Container) دارید که بسته به نیاز از آنها استفاده می کنید. همچنین چند اپلیکیشن وب اضافی به همراه یک service bus و بسیار موارد دیگر که همگی آن‌ها به همراه یکدیگر در قالب یک سیستم به کاربر خدمات ارائه می‌دهند.

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

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

شما با پیاده‌سازی یک سرویس Log Management تمام لاگ‌ها را جمع‌آوری می‌کنید و از آن‌ها برای راه‌اندازی یک تصویر پویا، هوشمند و با قابلیت مشاهده آسان سلامت سیستم‌ها استفاده می‌کنید.

جمع آوری و مرتب‌سازی لاگ‌ها

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

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

تجزیه‌ی لاگ‌ها و تبدیل آن‌ها به داده

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

گونه‌های مختلف لاگ

لاگ ها را می توان بر اساس فرمت آنها، منبع آن و یا حتی اطلاعاتی که در خود دارند به انواع مختلفی دسته‌بندی کرد. اگرچه لاگ‌ها را به راحتی نمی توان لیست کرد اما می‌توان آن‌ها را بر اساس چند گونه‌ی کلی آن‌ها تعمیم داد:

محتوا

محتوای لاگ می‌تواند اطلاعات، هشدار یا علامت هوشیاری (Alert) یا خطای مهلک باشد که در برخی موارد بسیار مهم هستند و در برخی موارد اهمیت آنها می تواند بسیار کم باشد.

منبع

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

  1. anti-malware software
  2. applications
  3. authentication servers
  4. firewalls
  5. intrusion prevention systems
  6. network access control servers
  7. network devices (routers, switches, etc.)
  8. operating systems
  9. remote-access software
  10. vulnerability management software
  11. web proxies

فرمت

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

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

چالش ها

صحبت کردن از داده‌ی لاگ یعنی صحبت کردن از داده‌ای گسترده و همیشه در حال تغییر که همواره نیاز به بازنگری دارد. از ویژگی‌های چالش برانگیز آن می‌توان به موارد زیر اشاره کرد:

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

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

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

جستجو

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

مانیتورینگ، مصورسازی (visualization) و هشدار

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

مانیتورینگ

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

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

پس به طور کلی مراحل را به صورت زیر می توان در نظر گرفت:

  • جمع آوری لاگ
  • تبدیل لاگ به داده
  • جستجو
  • مانیتورینگ و هشدار
  • مصورسازی و داشبورد

آنالیز لاگ

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

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


این مقاله ادامه دارد…