چه یک توسعه دهنده یا یک مهندس DevOps باشید، دیر یا زود باید گزارشهایی که کدتان تولید میکند و معمولاً در سرورهای مختلف توزیع شدهاند را، بررسی کنید. چیزی که وضعیت را پیچیده می کند این است که وقتی حجم داده ها شروع به رشد می کند، مدیریت و نگهداری محیط می تواند بسیار بیشتر از آنچه شما میخواهید طول بکشد. علاوه بر این، جریانهای داده بزرگتر منجر به بینش تاخیری در مورد وضعیت پروژه شما میشود. در این مرحله، یک سؤال مطرح می شود: چه کاری می توانم انجام دهم تا همه چیز را کنترل کنم؟ در این مقاله، میخواهیم به بررسی ابزارهایی بپردازیم که مدیریت این وضعیت پیچیده را برای ما سادهتر میکنند.
مدیریت لاگ چیست؟
مدیریت گزارش (Log Management) فرآیند مدیریت رویدادهای گزارش است که توسط همه برنامههای نرمافزاری و زیرساختهایی که روی آن اجرا میشوند تولید میشوند. این شامل جمعآوری گزارش، تجمیع، تجزیه، ذخیرهسازی، تجزیه و تحلیل، جستجو و بایگانی است، هدف مدیریت لاگها استفاده از دادهها برای عیبیابی و بهدست آوردن بینشهای تجاری، و در عین حال تضمین انطباق و امنیت برنامهها و زیرساختها. گزارشها معمولاً در یک یا چند فایل گزارش ثبت میشوند. مدیریت گزارش به شما این امکان را میدهد که دادهها را در یک مکان جمعآوری کنید و بهجای موجودیتهای جداگانه به آنها به عنوان بخشی از یک کل نگاه کنید. به این ترتیب، میتوانید دادههای گزارش جمعآوریشده را تجزیه و تحلیل کنید، مسائل و الگوها را شناسایی کنید تا بتوانید تصویر واضح و بصری از عملکرد همه سیستمهای خود در هر لحظه ارائه دهید. ورود به سیستم به بخشی جدایی ناپذیر از هر تیم DevOps تبدیل شده است.
آیا لاگگرفتن از سیستمها اهمیت دارند؟
۱۰۰ درصد! مدیریت لاگ در مورد سلامت و انطباق سیستم ها و برنامه های شما دید کلی ارائه میدهد. بدون آن، به امید یافتن منابع مشکلات عملکرد، اشکالات، رفتار غیرمنتظره و سایر مسائل مشابه، در تاریکی دست و پا میزدید. هنگام تلاش برای عیبیابی مشکلات تولید، مجبور خواهید بود چندین فایل گزارش را به صورت دستی بازرسی کنید. این به طرز دردناکی کند، مستعد خطا، گران است و مقیاسپذیر نیست. مدیریت لاگ به دلیل ماهیت پویا و توزیع شده آنها برای اپلیکیشنهایی که در ابر مستقر شدهاند، مهم است. بر خلاف برنامههای کاربردی سنتی، برنامههای Cloud Native اغلب در کانتینرها اجرا میشوند و بهجای نوشتن گزارشها در فایلهای گزارش، گزارشها را به خروجی استاندارد منتشر میکنند. این به این معنی است که شما "گزینه پیش فرض" ثبت دستی گزارش ها را ندارید. به طور معمول، شما لاگ ها را ضبط می کنید و آنها را به یک پایگاه متمرکز مدیریت گزارش ارسال می کنید. به طور خلاصه، مدیریت لاگ به اپراتورهای برنامه و زیرساخت (توسعه دهندگان، DevOps، SysAdmins و غیره) امکان عیبیابی مشکلات را میدهد و به سهامداران تجاری (مدیران محصول، بازاریابی، BizOps و غیره) اجازه می دهد تا راحتتر محصول و مشکلات و نیازمندیهای آن محصول را درک کنند. از خلال این گزارشها حتی میتوان تهدیدات موفق و ناموفق مانند ورودهای ناموفق و موفق به سیستم، نشت اطلاعات و ... را به راحتتر متوجه شد.
لاگ گیری چه مزایایی دارد؟
مانیتورینگ و عیبیابی آسانتر: رایجترین و اصلیترین مورد استفاده مدیریت لاگ، عیبیابی نرمافزار و زیرساخت است. رویدادهای گزارش با نظارت برنامه و نظارت سرور به دست میآیند. توسعهدهندگان، DevOps، SysAdmins و SecOps از این معیارها و گزارشها استفاده میکنند تا در مورد عملکرد برنامهها و زیرساختها و مشکلات امنیتی اطلاعات بهدست بیاورند، علت مشکلات را بیابند و معیارهای کیفی برنامه را بهینه کنند. داشتن ابزارهای مدیریت لاگ خوب به کاهش MTTR (Mean Time To Recovery) کمک می کند. خرابی های طولانی مدت یا حتی برنامه ها و زیرساخت هایی که عملکرد ضعیفی دارند نیز می توانند باعث خسارتهای مالی و ازدست رفتن اعتماد مشتریان به سیستم شوند. بنابراین، نرمافزار مدیریت لاگ نقش مهمی در کاهش MTTR ایفا میکند. با این حال، گزارشها ارزشی فراتر از عیبیابی ارائه میکنند. اصطلاحا گفته میشود ابردادهها یکی از نتایج مدیریت و ساختاربندی مناسب سیستم لاگینگ است. با تحلیل این دادهها میتوانیم مثلا بفهمیم روی چه بخشها یا جنبههای تجاری سرمایهگذاری کنیم زیرا مثلا در فروشگاه اینترنتی ما مشتریان به کررات محصولی را جستجو کردهاند که اصلا در حوزه کاری ما نیست پس آیا با موجود کردن محصول سود سرشاری حاصل میشود؟ برخی سوالات و نتایج کمک میکنند که حتی معماری سیستمرا نیز ارزیابی کنیم. اگر ارتباط با بخش مدیریت لاگ به خوبی پیش برود، سیستمی پایدارتر، سریع تر و مقرون به صرفه تر خواهیم داشت.
عملیات بهبود یافته: همانطور که برنامه ها و سیستم ها پیچیدهتر و پیچیدهتر میشوند، اندازه و دشواری عملیات شما نیز افزایش مییابد. با وجود نقشهای متفاوت و بعضا درتداخلی مثل SecOps، SysAdmins و DevOps نظارت دستی همه چیز را دشوارتر خواهند داشت، بنابراین به زمان و منابع مالی بیشتری نیاز دارند تا ارزیابیهای بهینهای از سیستم اعمال کنند. با استفاده از سیستم مدیریت لاگها، میتوانید روندها را در کل زیرساخت شرکت خود شناسایی کنید، به شما این امکان را می دهد که زودتر با آن سازگار شوید و راه حل هایی ارائه دهید که جلوی اتفاق مشکلات پیش از وقوع گرفتهشود.
استفاده بهتر از منابع: وقتی صحبت از مشکلات عملکرد سیستم می شود، اضافه بار سیستم همیشه مانند ابر تاریکی است که در حال ظهور است. با این حال، باید به خاطر داشته باشید که همیشه مقصر نرمافزار شما نیست، بلکه درخواستهایی که روی سرور خود دارید، مقصر است. چه تعداد آنها زیاد باشد و چه بسیار پیچیده، سیستم شما ممکن است در برخورد با آنها با مشکل مواجه شود. در این مورد، کاری که مدیریت لاگ انجام میدهد، کمک به پیگیری استفاده از منابع است. یعنی اینکه ببینید در چه زمانهایی سیستم شما نزدیک به بارگذاری بیش از حد است تا بتوانید منابع خود را بهتر تخصیص دهید. نظارت بر عملکرد میتواند به شما اطلاع دهد که آیا مشکلات عملکرد وجود دارد یا خیر. به عنوان مثال، ممکن است متوجه شوید که IO زمانی که درخواستها کند هستند، بیش از حد بارگذاری میشود. با این اوصاف، برای دریافت درک بهتر و عمیقتری در مورد علت بالا رفتن بیش از حد درخواست IO در آن زمان مشخص، به گزارشهای پرسوجو نیاز دارید. برخلاف معیارها، با گزارشها، شما متادیتای بیشتری برای فیلتر کردن و تجسم دارید.
تجربه ی کاربر: یکی از بزرگترین دغدغههایی که افرادبرای کار با سیستم میتواند انتظار بیش از حد برای سرعت کار با سیستم است. مدیریت گزارش به شما این امکان را میدهد که درخواستها را در هر سطحی (API، پایگاه داده و غیره) نظارت کنید و ببینید کدام یک از آنها میانگین پاسخ بالاتری از حد مجاز تعیین شده (SLA) دارند و پس از رفع مشکلات آن، تجربه کاربر از کار با سیستم را بهبود دهیم.
درک رفتار بازدیدکنندگان سایت: مدیریت لاگها میتواند با ردیابی حرکات کاربران در سایت یا پلتفرم کمک کند تا بتوانید درک بهتری از رفتار آنها به دست آورید و تجربه آنها را بهبود بخشید. در اینجا، مدیریت گزارش و نظارت بر کاربر واقعی (RUM) مکمل یکدیگر هستند. ابزارهای RUM دسترسی به دیدگاه کاربر، مانند تعداد بازدیدکنندگانی که در سایت خود داشتهاید، صفحاتی که بیشترین زمان را در آن صرف کردهاند و موارد دیگر را فراهم میکنند. از تجمیع و مدیریت لاگها، به ابردادههایی در مورد منطق کسبوکارتان دسترسی دارید: تعداد کاربرانی که در نهایت پرداخت کردند، درخواستهای پشتیبان چگونه به نظر میرسیدند، و .... با بررسی این دادهها، میتوانید فرصتهایی مانند زمان عرضه یک محصول جدید را شناسایی کنید چه زمانی سایت خود را برای تعمیر و نگهداری ببندید یا چه زمانی تخفیف ارائه دهید.
امنیت بیشتر: تحلیل گزارشها و لاگهای در سطح شبکه یا سرویسهای مختلف به ما میتوانند درکی از سطح امنیت در سیستم، علایق هکرها و نقاط قابل بهبود ارائه کنند: ناهنجاری ها در لاگها یا رفتارهای کاربران ممکن است نشانه حمله باشد. گزارشها به مدیران امنیتی کمک میکنند تا با ارائه جریانی زنده از رویدادهای گزارش، ناهنجاریها را در بلافاصله تشخیص دهند. بنابراین، هر زمان که کسی تلاش می کند امنیت سیستمهای شما را به چالش بکشد - چه از داخل باشد یا یک تهدید خارجی، درک بیشتری نسبت به آنچه واقعاً اتفاق افتاده است خواهید داشت. همچنین می توانید قبل از وقوع ناهنجاری ها هشدار دریافت کنید، بنابراین می توانید قبل از تشدید مسائل واکنش نشان دهید.
ابزارهای مدریت لاگ
امروزه ابزارهای بسیاری به منظورهای مختلفی برای مدیریت لاگ در بازار عرضه شدهاند که اهداف و جنبههای مشترک و مختلفی را تحت پوشش خود قرار میدهند. ما نیز برخی از معروفترین ابزارهای مدیریت لاگ را معرفی میکنیم:
پشته ELK : پشته ELK ترکیبی از سه سرویس جداگانه است که همه آنها منبع باز هستند و توسط یک تیم توسعه یافته اند. Elasticsearch یک موتور جستجوی بسیار قدرتمند و بسیار مقیاس پذیر است که میتواند حجم زیادی از دادهها را ذخیره کند و به عنوان یک خوشه مورد استفاده قرار گیرد. Logstash ابزاری برای واکشی دادهها از/به یک مکان خاص است. دارای تنوع گسترده ای از پلاگین ها و یک جامعه کاربری بزرگ است. Kibana یک رابط کاربری گرافیکی است که به شما امکان جستجو، تجزیه و تحلیل و تجسم مقادیر زیادی از داده های پیچیده از پایگاه داده Elasticsearch را میدهد. در بیشتر موارد، پشته ELK از Filebeat استفاده می کند. هدف این ابزار تحویل لاگ ها به یک سرور خاص است. پس از اینکه با Filebeat تحویل داده شدند و با Logstash پردازش شدند، در کلاستر ElasticSearch قرار می گیرند. از آنجا، لاگ ها برای نمایش نتایج توسط کیبانا گرفته می شوند.
در کل پشته ELK یک پشته همهکاره برای مدیریت و دیدن لاگهای سیستم است. پشته را می توان به عنوان یک برنامه کاربردی مستقل استفاده کرد یا با برنامه های موجود برای دریافت به روزترین داده ها یکپارچه شد.
ابزار Graylog: Graylog یک ابزار قدرتمند برای مدیریت گزارشها است که گزینههای زیادی برای تجزیه و تحلیل گزارشهای ورودی از سرورهای مختلف در اختیار شما قرار میدهد. روش کار Graylog تقریباً شبیه به ELK است. علاوه بر سرور Graylog که از برنامه کاربردی و سرور رابط وب تشکیل شده است، برای اینکه بتوانید کل پشته را به طور کامل قابل اجرا کنید، باید دیتابیس MongoDB و Elasticsearch را نیز داشته باشید.
همانطور که گفتیم، Graylog گزینه های مدیریتی واقعاً خوبی را در اختیار شما قرار می دهد: شما می توانید تمام آدرس های IP مسدود شده توسط فایروال در هفته گذشته را جستجو کنید، تمام ورودهای ناموفق SSH. علاوه بر این، می توانید فیلترهایی را بر اساس پارامترهای مشخص شده ایجاد کنید. البته این ابزار باید روی بهبود گزارشهای خود کارهای جدی کند.
ابزار Data dog: یک ابزار نظارت و تجزیه و تحلیل برای تیمهای فناوری اطلاعات (IT) و DevOps است که میتواند برای تعیین معیارهای عملکرد و همچنین نظارت بر رویدادها برای زیرساختها و خدمات ابری استفاده شود. این نرم افزار می تواند سرویسهایی مانند سرورها، پایگاه های داده و ابزارها را نظارت کند. نرم افزار مانیتورینگ و مدیریت لاگ Datadog برای استقرار در محل یا به عنوان یک نرم افزار به عنوان سرویس (SaaS) در دسترس است. Datadog از سیستم عامل های ویندوز، لینوکس و مک پشتیبانی می کند. پشتیبانی از ارائه دهندگان خدمات ابری شامل AWS، Microsoft Azure، Red Hat OpenShift و Google Cloud Platform است. Datadog از یک عامل نوشته شده با Go استفاده می کند و بکاند آن از Apache Cassandra، PostgreSQL و Kafka ساخته شده است و از یک رابط برنامه کاربردی Rest (API) برای اجازه دادن به Datadog برای ادغام با خدمات، ابزارها و زبان های برنامه نویسی متعدد استفاده میشود.
شرکت آتین آتیه اندیش: شرکت آتین آتیه اندیش واقع در پارک علم و فناوری دانشگاه تهران در سال ۱۳۹۶ خدمات خود را آغاز کرده است و با معرفی محصولاتی در حوزه مدیریت لاگهای سیستم و سامانه مدیریت هویت دنبال جایگاه مناسبی در صنعت IT ایران است. آتین یک سرویس مدیریت هویت و دسترسی است که با تمرکز ویژه بر رضایت مشتری بر بستر زیرساخت ابری توسعه یافته است. با استفاده از سامانه آتین مراکز و سرویس دهنده های فناوری اطلاعات به راحتی می توانند دسترسی دستگاه های مختلف داخل سازمان یا اشخاصی از جمله کارمندان، شرکای تجاری و مشتریان را به تمامی سامانه ها به صورت متمرکز مدیریت نمایند. آتین تضمین می کند که دسترسی همه کاربران بر اساس سیاست واحد صورت گیرد و تمامی افراد و سرویس ها، احراز هویت، مجوزدهی و نظارت شوند. یکی از محصولات این شرکت سامانه مدیریت لاگ است که خدمتی اضافه بر سامانه مدیریت هویت و دسترسی ارائه میکند.
این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است