فعالیت مانیتورینگ مخصوصا در فضاهای محاسبات و سرویسهای ابری، شامل ردیابی پویا پارامترهای کیفیت سرویس (QoS) مربوط به منابع مجازی (مانند ماشینهای مجازی، فضای ذخیرهسازی، شبکه، دستگاهها و ...)، منابع فیزیکی که به اشتراک میگذارند، برنامههایی که روی آنها اجرا میشوند و دادههای میزبانی شده روی آنها است.
پیکربندی برنامهها و منابع در محیطهای رایانش ابری با توجه به تعداد زیادی از منابع ناهمگن، بسیار چالش برانگیز است. علاوه بر این، با توجه به این واقعیت که در یک زمان معین، ممکن است نیاز به تغییر پیکربندی منابع ابری (تعداد ماشینهای مجازی، انواع ماشینهای مجازی، تعداد نمونههای دستگاه و ...) به دلایلی همچون برآوردهکردن الزامات کیفیت، رفع موقت مشکل قطعی شبکه، خرابی دیسک و ... وجود دارد؛ وجود ابزارهایی برای تشخیص خودکار این موارد و رفع مشکل آنها به صورت خودکار یا در کمترین حالت اطلاعرسانی تیم پشتیبانی برای آگاهشدن از موضوع الزامی است. در عمل در مقیاسهای بزرگ این قدر منابع و پارامترهای مختلف زیاد خواهند بود که بررسی دستی آنها، میتواند بسیار زمانگیر و همچنین دارای خطای انسانی باشد.
از این رو، ابزارهای نظارت و پایش بر سامانههای بزرگ میتوانند به ارائهدهندگان سرویسها یا توسعهدهندگان برنامه در موارد زیر کمک کنند:
در این قسمت ما قصد نداریم که تمامی مزایای و معایب استفاده و عدم استفاده از سرویسهای پایش سامانه را بیان کنیم. نیاز به وجود سامانه مانیتورینگ بر حسب تعاریف و نیازهای یک کسب و کار ممکن است الزامی یا در برخی موارد پیچیدگی و هزینهی بیش از حد باشد. به همین دلیل بحث این موضوع خارج از این مقاله است. هدف این مقاله این هست که با فرض وجود نیاز به سرویسهایی برای پایش سامانه، از چه ابزارهایی میتوان در این زمینه استفاده نمود، ویژگیها و مزایای خاص این نرمافزارها چیست و ...
در سامانههای ابری و بزرگ، نظارت برای حفظ در دسترس بودن سیستم و عملکرد درست سامانه ضروری است. این ضرورت هم برای ارائهدهندگان سرویس به مشتری و هم برای مصرف کنندگان سرویس مهم و حیاتی است. پایش یک سامانه یک ابزار کلیدی و مهم برای «مدیریت منابع نرمافزاری و سختافزاری» و «ارایهی اطلاعات مستمر» برای آن منابع و همچنین برای برنامههای کاربردی در سامانه است. در سامانههای بزرگ، نظارت میتواند به دو شکل متفاوت انجام شود: پایش سطح بالا و پایش سطح پایین.
نظارت سطح بالا به وضعیت پلتفرم مجازی مرتبط است (اجرای درست برنامه، تولید خروجی مناسب، کارایی سرویس، در دسترسبودن سرویس، ...)
نظارت سطح پایین به اطلاعات جمعآوری شده در مورد وضعیت زیرساخت فیزیکی مربوط میشود. (عدم وجود خرابی در دیسک، در دسترسبودن سرویس زیرساختی، عدم مصرف CPU بالا، تعادل در مصرف پنهای باند شبکه)
سیستم مانیتورینگ معمولا یک سیستم قابل تنظیم (برای تطابق با محیطهای مختلف) و معمولا چند بخشی است که قادر به پشتیبانی از عملکردهای نظارتی است. معمولا ابزارهای مانیتورینگ خاصمنظوره مثل ابزار پایش روترهای شبکه و پایش سیستمعاملها و برنامهها جدا هستند و در کنار هم برای پوشش کامل نیازها استفاده میشوند. گاهی نیز یک ابزار اکثر این نیازمندیها را (احتمالا نه به اندازهی ابزار تخصصی در آن حوزه) به صورت یکجا ارائه میدهد.
ابزارهای پایش، به طور جامع موارد و منابع شناسایی شده در سامانه را برای ناهنجاریها رصد میکند. در تشخیص یک رفتار غیرعادی، سیستم پایش تلاش میکند تا این نمونه یا منبع را بهطور خودکار تعمیر کند، در صورتی که مانیتور مربوطه دارای یک عمل بهبود خودکار باشد. (فرآیندی توسط توسعهدهنده یا ابزار ارائه شده باشد) در صورت که ترمیم خودکار توسط ابزار پایش ممکن نباشد، ابزار پایش به تیم پشتیبانی اطلاع میدهد. از نظر فنی، اعلانها را میتوان با روشهای مختلفی مانند ایمیل یا پیامک ارسال کرد.
در ادامه با دو نمونه از ابزارهای منبعباز در این زمینه آشنا میشویم و به صورت خلاصه عملکرد و نحوهی کارکرد آنها را بررسی میکنیم.
پرامتئوس یک راه حل نظارتی برای ضبط و پردازش هر سری زمانی صرفا عددی است. این ابزار معیارهای منطبق بر این اصل را به همراه شناسهها و ویژگیهای زمانی منحصر به فرد آنها، جمع آوری، سازماندهی و ذخیره میکند.
پرامتئوس نرم افزار منبعباز است که متریکها را از اهداف مشخصشده (scrape targets) جمعآوری میکند. ابزارهای زیادی امروزه از نحوهی تعامل پرامتئوس پشتیبانی میکنند (و در صورت عدم پشتیبانی پرامتئوس روشهایی برای پشتیبانی ابزارهای خاصمنظوره ارائه میدهد) شامل پلتفرمهای زیرساختی (مانند کوبرنتیز)، برنامههای کاربردی و خدمات (مانند سیستمهای مدیریت پایگاه داده، برنامههای توسعه دادهشده توسط برنامهنویسان) میشود. پرامتئوس همراه با سرویس مدیریت هشدار (Alertmanager)، یک ابزار جمعآوری معیارها و ارائهی هشدارهای انعطافپذیر را ایجاد میکند.
پرامتئوس دارای اجزای مختلفی است که با هم کار میکنند تا سلامت، رفتار و عملکرد سیستم را ردیابی و گزارش دهند. روش جمعآوری دادهها که پرامتئوس پیشنهاد میدهد روش بسیار سادهای است. هر سامانهای کافی است که متریکهای خود را در قالب متن ساده از طریق نقاط پایانی HTTP (endpoint) نشان بدهد، در آن صورت پرامتئوس دادههای موردنیاز را جمعآوری میکنند و آنها را ذخیره میکند. در ادامه پرامتئوس این امکان را فراهم کند تا با زبان پرس و جوی خاص پرامتئوس (PromQL) آنها را تجزیه و تحلیل کنید.
در ادامه به صورت خلاصه چند بخش مهم پرامتئوس را مورد بررسی قرار میدهیم.
سرور پرامتئوس بخش مربوط به جمعآوری داده از هدفهای مشخصشده و ذخیرهسازی آن برای استفادههای بعدی را به عهده دارد. همچنین این سرور بحث مدیریت هشدارهای تعریفشده و زمانبندی و اجرای آنها به منظور بررسی وضعیت سرویسهای مختلف را نیز بر عهده دارد. روش کار پرامتئوس مبتنی بر روش کشیدن (pull based) میباشد به این معنا که دادهها و متریکها به صورت خودکار به سرور فرستاده نمیشوند بلکه سرور آنها را جمعآوری و ذخیره میکند.
اطلاعات مربوط به نقاط هدف برای جمعآوری متریکها معمولا به شکلهای مختلفی (service discovery) میتواند مشخص شود. خود پرامتئوس تعداد روش مشخص و استاندارد شامل روش فایل (فایل json یا yaml)، روشهای مبتنی بر کوبرنتیز و ... را ارائه میدهد.
بر خلاف دیگر نرمافزارهای مانیتورینگ که خود برنامه، پشتیبانی از نرمافزارهای مختلف مثل SNMP، رستسرور، متریکهای سیستمعامل و ... را پشتیبانی میکنند، پرامتئوس بسیار سبک بوده و این موارد را در داخل خود ندارد. در عوض تعداد بسیار زیادی صادرکننده (exporters) به صورت رسمی و غیر رسمی توسط پرامتئوس نوشته شده است که میتوانند متریکهای سامانههای مختلف مثل پایگاهداده، سیستمعامل و ... را جمعآوری و در قالب یکسری صفحات متن ساده HTTP ارائه دهند تا توسط سرور اصلی پرامتئوس جمعآوری شوند. این طراحی این امکان را فراهم میکند تا هر کسی بتواند در صورتی که نرمافزار استانداری برای سامانهی خاص و مورد استفادهاش وجود نداشت، پیادهسازی خود را فراهم کند.
اگر چه پرامتئوس بر مبنای جمعآوری داده به جای ارسال داده از سمت برنامهها عمل میکند، اما در مواقعی نیاز هست که متریکها به جای جمعآوری ارسال شوند. این نیاز معمولا در برنامههای کوتاه مدت (برنامهای که در زمان خاص به مدت کوتاهی اجرا میشود و سپس متوقف میشود) الزامی است. در این نوع برنامهها، چون برنامه همواره بالا نیست، احتمال زیاد پرامتئوس در زمانهایی که مراجعه میکند دادهای را مشاهده نمیکند و در زمانهایی هم که برنامه بالا هست، ممکن است دقیقا در زمان درست که متریک حاضر هست، مراجعه نکند. در چنین مواردی معمولا یک سرور میانی بالا آورده میشود که متریکها به صورت دائمی در قالب یک صفحه HTTP خروجی داده میشوند. سپس برنامههای کوتاهمدت اطلاعات خود را در زمانهای موردنیاز به این سرور میانی ارسال میکنند و سرور میانی این اطلاعات را برای سرور پرامتئوس خروجی میدهد.
پرامتئوس برای این نیازمندی مشابه که احتمالا در کاربردهای زیادی نیاز میشوند، یک سرور Push gateway طراحی کرده است که عملکرد مشابه عمکلرد توصیفشده در قسمت بالا را ارائه میدهد. به عبارتی از این طریق به نوعی پرامتئوس پشتیبانی از متریکهای مبتنی بر ارسال (push based) را نیز فراهم میکند.
با این حال توصیف کلیهی ویژگیهای پرامتئوس خارج از بحث این مقاله بوده و به همین مقدار توضیح برای آشنایی با آن اکتفا میکنیم.
زبیکس یک راهحل پایش توزیع شده منبع باز برای نظارت بر سرورها است. این نرمافزار برای نظارت بر پارامترهای متعدد یک شبکه و سلامت و یکپارچگی سرورها، ماشینهای مجازی، برنامهها، سرویسها، پایگاههای داده، وب سایتها، ابر و غیره استفاده میشود. زبیکس از یک مکانیسم اعلان انعطافپذیر استفاده میکند که از طریق تعدادی از پلتفرمها مانند ایمیل، جیرا، slack و ... به کاربران هشدار میدهد.
یکی از مزیت های اصلی این نرمافزار مشابه پرامتئوس این است که یک نرم افزار متن باز است، به این معنی که کاملا بدون هزینه و رایگان است. سرور زبیکس دادهها را از تمام عوامل خود جمعآوری میکند، آنها را تجزیه و تحلیل میکند و نمایش دادهای مناسب از آنها ارائه میدهد. همچنین روشی قابل تنظیم و آسان برای تفسیر رابط کاربری/داشبورد وب با ویجتها، نمودارها، نقشههای شبکه، نمایش اسلاید و گزارشهای مختلف ارائه میکند.
مهمترین المانهای زبیکس شامل آیتمها (Items)، محرکها (triggers) و اعمال (actions) میشود. آیتمها شامل هر چیزی میشوند که میتوانیم روی سیستم مورد پایش تست و خروجی آن را به دست بیاوریم. خروجی تستها در واقعیت دادهای خواهد بود که بعدا میتوانیم از آن برای اطلاعرسانیهای موردنیاز یا تحلیل داده مثل رسم گراف و ... استفاده کنیم. محرکها در واقعیت شروطی هستند که محدودهی یک آیتم را مشخص میکنند. (محدودهای که ما انتظار داریم) محرکها دارای وضعیت یا حالت میباشند مثلا میتوانند در حالت عادی (OK) باشند و در صورت خارجشدن آیتم مورد بررسی از محدودهی مشخصشده، به وضعیت مشکلدار (Problem) تغییر حالت دهند. همچنین در صورتی که دوباره وضعیت آیتم موردبررسی در بازهی مورد انتظار قرار بگیرد، دوباره متریک از حالت مشکلدار به حالت عادی منتقل میشود. بین جابهجایی یک محرک از حالت عادی به مشکلدار و مشکلدار به عادی تفاوت میباشد و هر کدام یک انتقال (transition) مستقل محسوب میشوند. اعمال در واقعیت فرآیندهایی هستند که هر گاه وضعیت یک محرک تغییر میکند، اجرا میشوند. برای هر کدام از انتقالهای محرک میتوان اعمال متفاوتی را تعریف نمود. همچنین مجموعه فرایندهای فراوانی از پیش طراحیشده (مثل ارسال ایمیل، sms و ...) و امکان تعریف فرآیندهای شخصی وجود دارد.
قواعد دقیق چگونگی تعریف هر کدام از موارد بالا در سامانه زبیکس بسته به نوع نیاز میتواند ساده تا پیچیده باشد اما بحث این مقاله آموزش استفاده از زبیکس نبوده و به همین دلیل در صورت علاقه، میتوانید مطالب مرتبط را مطالعه کنید.
اگر می توانید یک دستگاه، پردازش یا سرویس را در شبکه از طریق یک برنامه، پروتکل یا حتی یک کد اسکریپت (bash script) مشاهده کنید، میتوانید آن را با استفاده از Zabbix پایش کنید. معمولا در زمانهای قدیم از روش SNMP (پروتکل مدیریت شبکه ساده) برای پایش بر دستگاههای شبکه استفاده میشد اما زبیکس فقط به استفاده از SNMP محدود نمیشود.
زبیکس از دو مولفهی اصلی تشکیل شده است - سرورهای زبیکس و عاملهای زبیکس (Zabbix Agents) (البته به صورت دقیقتر مواردی مثل پراکسیها و ... نیز وجود دارد که فعلا در این قسمت بحث نمیشود)
سرورهای زبیکس برنامههای مرکزی هستند که نظارت میکنند، با پراکسیها و عوامل زبیکس تعامل دارند، محرکها را محاسبه میکنند، اعلانها و فرآیندها را متناسب با اعمال تعریفشده انجام میدهند و به عنوان یک مخزن مرکزی دادههای پایششده عمل میکنند. سرورهای زبکیس میتوانند بر روی اکثر سیستم عاملها اجرا شوند.
عامل زبیکس یک برنامه دیگر است که بر روی اهداف مشخصشده برای پایش مثل منابع و برنامههای محلی (هارد دیسک، حافظه، آمار پردازنده و غیره) مستقر میشود و اطلاعات آنها را جمعآوری میکند. عامل اطلاعات عملیاتی را به صورت محلی جمع آوری میکند و دادهها را برای پردازش بیشتر به سرور زبیکس مرکزی ارسال میکند. عاملهای زبیکس از طیف وسیعی از توابع داخلی برای جمعآوری دادههای مختلف پشتیبانی میکند.
در ایران معمولا در زمینهی پایش بخشهای مختلف مثل پایش سرورهای یک کلاستر، شبکهی یک کلاستر و ... توسط شرکتهای مختلف سرویسهایی ارائه میشود. در ادامه با دو مورد از این شرکتها آشنا میشویم.
شرکت نت نگار تلاش کرده تا هر آنچه مجموعهای از افراد صاحب کسب و کار از یک سرویس پایش شبکه و وبسایت برای آنلاین نگه داشتن سرویس خود نیاز دارند را فراهم کند. از جمله سرویسهای ارائه شده توسط این شرکت برای این موضوع میتوان به پوشش دیتاسنترهای ایران، عیبیابی آسان، پوشش بین المللی، اطلاعرسانی (Notification)، گزارش پایش، وضعیت صفحه عمومی، تعریف محرک و ... اشاره نمود.
در زیر توضیح این شرکت در مورد برخی از ویژگیهای مهم آن در زمینهی پایش را مشاهده میکنیم:
یکی از قابلیتهای سرویس مانیتورینگ نت نگار، امکان تعریف گروههای کاری و انتخاب آنها برای دریافت پیامهای تیمی در زمان بروز خطا است. همچنین امکان اطلاعرسانی از طریق تماس تلفنی و اتصال حساب کاربری سرویس کاوه نگار، در شرایط حساس نیاز است با آن ها تماس تلفنی گرفته شود، وجود خواهد داشت که این امر پایش تیمی سرویس آنلاین شما را میسر میکند.
اگر محصول شما دارای وب اپلیکیشن های موبایل است و از API استفاده میکنید، میتوانید با قرار دادن یک Endpoint در API خود وضعیت آن را مانیتور کنید و از بروز خطا یا افزایش زمان پاسخگویی (Response time) قبل از مشتریان مطلع شوید.
با تعریف مانیتور از نوع Ping میتوانید وضعیت Uptime سرور خود را از نقاط مختلف بررسی و مانیتور کنید.
...
برای آشنایی بیشتر با سرویس نتنگار میتوانید به سایت آن مراجعه نمایید.
نرم افزار مانیتورینگ شبکه بينا نرم افزاری برای پایش شبکه و کلاستر میباشد. پایش سرویسهای موجود بر روی شبکه را،رديابی هرگونه اختلال و اشکال، ارسال انواع اخطار به مسئولان شبکه و ... بخشی از ویژگیهای این نرمافزار میباشد.
نرمافزار بینا امکان پایش مواردی از جمله پایگاههای داده (شامل استفاده از منابع، وضعیت سختافزاری، سرویسها)، تجهیزات شبکه، سرورها، ایمیل سرورها، وبسایتها، سرورهای مجازی، دما و رطوب اتاقهای سرور و دیتاسنتر، پهنای باند بخشهای مختلف کلاستر، صحبت لینکهای شبکه، لاگ تجیزات شبکه و ... را فراهم مینماید. این نرمافزار توسط شرکت داناپرداز ارائه شده است که تاریخچهی کوچکی از آن را در زیر میتوانید مطالعه کنید.
در دانا پرداز ما اعتقاد داریم کسب و کار شما استحقاق این رو داره که از بهترین نرمافزارها استفاده کند. نرمافزارهایی که نیاز سازمان شما رو مطابق با استانداردهای روز دنیا پوشش بدهند، به راحتی نصب و راهاندازی بشوند و از همه مهمتر کاربر پسند باشند. ما با این نگرش، محصولات فوق العادهای طراحی و تولید کردیم که در بیش از 3000 شرکت و سازمان بزرگ در کشور نصب و راهاندازی شدهاند و البته این هنوز برای ما اول راه است. محصولات مدیریت خدمات فناوری اطلاعات که مخاطب اصلی این گروه از محصولات، واحد فناوری اطلاعات شرکتها و سازمانها است شامل مانیتورینگ شبکه و زیرساخت و همچنین مدیریت خدمات فناوری اطلاعات بر اساس چارچوب ITIL کمک میکند.
برای آشنایی بیشتر با خدمات نرمافزار ارائهشده توسط این شرکت در زمینه پایش سامانهها میتوانید از اطلاعات سایت آن استفاده نمایید.
فعالیت پایش مخصوصا در فضاهای محاسبات و سرویسهای ابری، شامل ردیابی وضعیت منابع مختلف استفادهشده توسط بخشهای مختلف کلاستر به مدیریت بهتر و دقیقتر کلاستر کمک فراوانی میکند. امروزه ابزارهای مختلفی چه خاصمنظوره و چه عمومی برای پایش بخشهای مختلف ارائه شده است. همچنین شرکتهای مختلفی در این زمینه برای ارائهی مشاوره و راهاندازی این سرویسها به کمک شرکتها آمدهاند. با توجه به نیازهای امروزه توجه به این مورد امروزه از اهمیت زیادی برخوردار میباشد.
این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است.