در این پست قصد داریم ابتدا بفهیم لاگ چیه ؟ بعد ببینیم چرا باید لاگ ها مدیریت بشه ؟ چه نرم افزاری هایی معروفی تو این حوزه وجود دارند؟ در آخر هم نگاهی به شرکت های ایرانی که تو این حوزه خدماتی ارائه میدهند می اندازیم.
برنامه نویس ها تو هر حوزه ای که برنامه ای مینویسند برای اینکه بعد بتوانند عملکرد برنامشون رو رصد کنن لاگ تولید میکنن . لاگ عموما یه فایل متنیه که برنامه نویس ها همه اتفاق هایی که مهم است و ممکن است بعدا به آن مراجعه شود را ذخیره میکنند. به عبارت های زیر نگاه کنید:
15 FEB 2021 | 12:30:50 | ali@gmail.com | login
خط بالا میتواند یک خط از فایل لاگ باشد هر رخداد در لاگ حداقل سه قسمت را دارد :
۱. زمان رخداد ۲.منبع (یعنی اون فرایند ، سیستم یا کاربری که باعث تولید لاگ شده ) ۳. داده لاگ : که گزارش اتفاق و هر اطلاعاتی در اون زمینه نیاز داریم است.
پس تا الان فهمیدیم فایل لاگ یه فایل (شاید متنی) هست که رخداد های مهم داخلش ثبت میشه
بعضی لاگ ها برای انسان ها نوشته میشن (مثل لاگ بالا) یعنی مثلا اگر من برنامه نویس یه اپلیکیشن نوشتم در حین برنامه یه مشکلی پیش اومد از برنامه افتادیم بیرون! میرم به فایل لاگ نگاه میکنم . از روی لاگ ها بررسی میکنم برنامه در چه شرایطی یا با چه سناریویی مشکل پیدا میکنه و بعد سعی میکنم برنامه رو اصلاح کنم تا در اون شرایط دیگه مشکل پیدا نکنه. خلاصه این نوع لاگ ها ساده هستند و انسان ها میتونن بخونن و با یک برنامه ویرایشگر متن (مثل notepad) قابل خوندن هستند.
احتمالا شما هم دیدید هر وقت با یک برنامه کار میکنید برنامه میپره بیرون (در اصطلاح crash میکنه) بعد یه پیام میاد میگه مشکل رو گزارش کنید. در این مواقع معمولا یکی از فایل هایی که به سازنده ارسال میشه فایل لاگ هست تا بررسی کنن ببینن چی شد که پرید بیرون و در نسخه های بعدی مشکل رو برطرف کنن.
بسیاری از لاگ ها هم برای اینکه سیستم یا برنامه یا ابزارها اونا رو بررسی کنن ساخته میشن در این شرایط این لاگ ها رو ما نمیتونیم بخونیم (در اصطلاح human readable نیست) و ممکنه این فایل ها به صورت باینری ساخته شوند.
لاگ ها اطلاعات بسیار زیادی با خود به همراه دارند. در واقع آنها ریز عملکرد سامانه ما هستند. اگر این اطلاعات به درستی استخراج شود برای توسعه دهنگان ، تیم زیرساخت بسیار مفید است . حتی اگر ماطلاعات بصورت آماری و تصویر سازی شود میتواند نگاه جامعی به مدیران محصول بدهند. برای کارشناسان امنیت در تست نفوذ ، امنیت شبکه و .. لاگ ها مهمترین منبع اطلاعاتی هستند . در مراکز بزرگ یا نظامی شاید سامانه هایی دیده باشید که وضعیت سرور یا سرویس ها را در لحظه (real time) پایش میکند و اطلاعات در یک داشبورد نمایش میدهد. جالب است بدانید در بسیاری موارد این اطلاعات از لاگ ها استخراج میشوند. و با ابزار ها بصورت تصویری نمایش داده میشوند. (برای نمونه به شکلی که در چند خط پایین تر آمده نگاه کنید )
اما مشکلی که وجود داره اینه که در یک سامانه معمولی، در لحظه صد ها یا شاید هزاران لاگ تولید میشه یک برنامه معمولی آنقدر لاگ داره که بدون مدیریت لاگ، فهمیدن دلیل مشکل بسیار سخت یا حتی غیرممکن باشه. مهمتر از تولید لاگ استخراج اطلاعات از لاگ هاست. این حجم عظیم از داده باید سازماندهی شود.
تمام فعالیت ها و فرآیند ها لازم برای تولید، جمع آوری ، استخراج اطلاعات و ذخیره و نگهداری این حجم عظیم داده، (به نام لاگ ) را با مفهوم کلی مدیریت لاگ (log management) معرفی میکنند.
پس مدیریت لاگ براساس تعریف انجمن ملی استانداردها و فناوری ها (NIST) باید بخش های زیر داشته باشد:
حالا که با وظایف اصلی ابزار های مدیرت لاگ آشنا شدیم بیاید نگاهی ابزار های معروف در این حوزه بندازیم :
عبارت ELK مخفف شده سه کلمه Elasticseach، Logstash و Kibana است. این سه تکنولوژی متن باز (open source) در کنار هم توانسته اند به یکی از بهترین و محبوب ترین ابزار های مدیریت لاگ تبدیل شوند.
در شکل بالا ترتیب استفاده از ابزار ها را میبنیم Beats لاگ ها را جمع آوری و به یک سرور ارسال میکنه توسط Logstash این لاگ ها پردازش و سپس برای استفاده Elasticsearch ذخیره میشه. سپس با کمک الستیک به سرعت بر روی لاگ ها جستجو و نتایج را برای مصور سازی به kibana تحویل میده
۲. ابزار Graylog
این ابزار هم یکی از قدرتمندترین ابزارهای مدیریت لاگ است که میتوان به کمک آن از سرور های مختلف لاگ های تجزیه و تحلیل کرد .
این ابزار با ابزار های دیگر مانند MongoDB برای بیگ دیتا و Elasticsearch که همونطور که بالاتر گفتیم برای نگه داشتن Log ها و فعال کردن جستجو متن استفاده می شه.یکپارچه سازی شده و باید آنها را هم در کنار این ابزار نصب کنیم.
۳. ابزار Sentry
یکی از ابزار open-source مدیریت لاگه که از سراسر برنامه به صورت در لحظه (real time) خطاها را جمع آوری می کنه تا توسعه دهندگان به راحتی بتوانند این خطا ها را برطرف کنند. این ابزار هر خطایی را که در برنامه بوجود آمده باشد را با جزئیات نمایش داده و خطاها را از طریق ایمیل، پیام کوتاه، Slack و ... در اختیار کاربرانش قرار می دهد.
یکی از مزیت های اصلی این ابزار پشتیبانی از بسیاری از زبان های برنامه نویسی از قبیل :Javascript, Python, Ruby, Node, Go, Android, Php و ... و همچنین بسیاری از فریم ورک ها از قبیل:React, Django, Rails, Angular, Laravel, Swift, Vue و ...است .
سادگی و انعطاف پذیری و قابلیت ادغام با دیگر برنامه ها این ابزار باعث شده به ادعای سازنده بیش از 60 هزار سازمان و بیش از ۱ میلیون برنامه نویس به طور فعال از این ابزار استفاده میکنند
یکی از شرکت هایی که در حوزه مدیریت لاگ خدکات ارائه میکند داده کاوان تصمیم یار (کوالاتک) نام دارد
شرکت داده کاوان تصمیم یار خدمات مختلف نرم افزاری ارائه میدهد که یکی از آنها “پلتکو” نام دارد که “پلتفرم یکپارچه سازی و مدیریت وب سرویس” میباشد.
پلتکو لاگهای سازمان به صورت خودکار جمع آوری میکند و طبق نیاز سازمان، دسته بندیهای لازم برای هر لاگ انجام میده (با ابزار Beat) سپس متناسب با نیازهای هر سازمان، لاگها را به داده تبدیل میکنه .
همچنین مدیر یا کاربر با سرعت لاگ مورد نظر خودشو جستجو کنه و بهش دسترسی پیدا کنه (با کمک الستیک سرچ)
علاوه بر اینها بصورت داشبورد اطلاعات را برای مانیتورینگ نمایش میده و در صورت لزوم میتونه هشدار ارسال کنه . مدیر هم میتونه بصورت کلی و جزیی از بخش های مختلف سیستم گزارشگیری کنه
همونطور که مشخصه این شرکت تقریبا تمام سرویس های ضروریمدیریت لاگ رو در اختیار کاربرانش قرار میده .
آتین :
آتین یک شرکت دانش بنیان در پارک علم و فناوری دانشگاه تهران است که فعالیت اصلی آن در حوزه خدمات احراز هویت است.
این شرکت خود را اینگونه معرفی میکند :
در واقع آتین یک سرویس مدیریت هویت و دسترسی است که با تمرکز ویژه بر رضایت مشتری بر بستر زیرساخت ابری توسعه یافته است. با استفاده از سامانه آتین مراکز و سرویس دهنده های فناوری اطلاعات به راحتی می توانند دسترسی دستگاه های مختلف داخل سازمان یا اشخاصی از جمله کارمندان، شرکای تجاری و مشتریان را به تمامی سامانه ها به صورت متمرکز مدیریت نمایند. آتین تضمین می کند که دسترسی همه کاربران بر اساس سیاست واحد صورت گیرد و تمامی افراد و سرویس ها، احراز هویت، مجوزدهی و نظارت شوند.
یکی از محصولات این شرکت سامانه مدیریت لاگ و مانیتورینگ کاربران است. که از اینجا میتونید اطلاعات بیشتری دربارش ببینید.
این سامانه هم رفتار های کاربران و رخداد مرتبط رو ثبت میکنه و امگان پیگیری و گزارش گیری رو به فراهم میکنه
سعی کردیم در این پست نگاه کلی و در عین حال مفید به لاگ ها و لزوم مدیریت اونها بندازیم. چند ابزار متنباز در اون حوزه بررسی کردیم . به شرکت هایی در ایران که در این حوزه فعال بودند پرداختیم. امیدوارم این مطلب براتون مفید بوده باشه.
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»