سال پیش بود که بابت پروژه یکی از مشتریان که تعداد سرور زیادی داشت دست به کد شده و با پایتون یک سیستم مانیتورینگ سرویس ها (بر مبنای پورت) تولید کردم. این سیستم عملکرد شرطی و کاملا بازی داشته و بعد از دان شدن یک سرویس می تواند دستورات دلخواه را به سمت سرور دلخواه بفرستد (نه الزاما سرور میزبان آن سرویس).
از ساده ترین کاربردهاش میشه به راه اندازی مجدد یک سرویس یا مثلا روشن شدن یک ماشین مجازی جایگزین، تغییرات در شبکه و ... اشاره داشت. راستش سناریو کلی این سیستم کمی ساده تر بود اما من با توسعه اون (امکان ارسال کامند به سرورهای دیگر) جذاب ترش کردم.
حتی میتوانم یک سرور مقصد ویژه هندل کردن کلیه کامند ها داشته باشیم و با نوشتن شل اسکریپت هایی برای هر نود در آن سرور، عملا با فراخوانی اون بش اسکریپت از طریق این سامانه، به محض دان شدن یک سرویس ما روی چند سرور مختلف اقداماتی را انجام بدهیم. قاعدتا ارسال پیامک یا ایمیل جزو ساده ترین اتفاقات هست.
اما قسمت پنهانی که من در این سیستم کار کردم و مشتری هم خبردار نیست ازش (چون بابتش پولی پرداخت نکرده بود، قابلیت دریافت جواب کامند و ایجاد قابلیت دستور پذیری سیستم از ریموت است.
به این ترتیب در صورت دان شدن یک سرویس، کامند اجرایی می تواند روی سرور میزبان خود اسکریپت پیاده شود و مثلا به حذف یا افزودن خودکار یک سرور از/به لیست سرویس های تحت مانیتورینگ منجر شود.
یا این اتفاق در طول یک فرایند برای فراخوانی سرویس جبرانی صورت بگیرد. به طور مثال سرویس وب سرور ما در سرور A دان شده است. ما تعریف کرده بودیم که باید سرور A خاموش شده و سرور B روشن شود (در قالب اسفیر). حالا مسئله قابل توجه این است که ماینتورینگ ما دیگر سرور A را نباید مانیتور کند و باید سرور B را مانیتور کند. ما می توانیم در تعریفی که همان زمان معرفی سرور A به سیستم داشته ایم این قابلیت را ایجاد کنیم. اینطور هر وقت سرور A از سرویس خارج شود خودکار از مانیتورینگ خارج شده و B مانیتور می شود که فرایند نظیر آن در سرور B برای سرور A در نظر گرفته شده است! یک اتوماسیون کامل (نوعی حلقه).
با توجه به اینکه کلیه آمارها در دیتابیس ذخیره می شود. به سادگی امکان ترسیم نمودارهای مختلف و گزارش گیری های دقیق مبتنی بر بازه زمانی وجود دارد که البته در حال حاضر روی سیستم (با توجه به بودجه مشتری) پیاده سازی نشده است. اما در نسخه تجاری که منتشر خواهم کرد قطعا گراف های جالبی از وضعیت آپتایم سرویس ها و دیگر فرایندها ارائه خواهم کرد.
قابلیت مطلوب تری که در سیستم وجود دارد این است که ما می توانیم چند نود برای مانیتورینگ داشته باشیم که همزمان با هم در ارتباط باشند و خود این نودها هم نسبت به هم مانیتورینگ داشته باشند.
حتی می شود با افزودن چند متد شرطی خاص دیگر به سیستم قابلیت تعریف منطقه ای داشت. یعنی مثلا اگر از لندن سرویس میل ما دان شد این اقدام صورت بگیرد و اگر از پاریس دان بود اقدام دیگر و اگر از هر دو منطقه دان بود اقدام سومی مثلا و ... که دیگر اینقدر عمیق نشدم برای توسعه اش هنوز.
نوشتن این سیستم با پایتون، شل اسکریپت و بوت استرپ 4 صورت گرفت و ظرف 3 روز پیاده سازی شد. البته شاید چون مدت ها تجربه کار با سیستم های مانیتورینگ داشتم و همیشه خودم مایل بودم چنین چیزی پیاده سازی کنم سرعت پیاده سازی سیستم هم در نوع خودش واقعا جالب بود.
در فرصت مناسب یک نسخه کامل و تجاری با مستندات حرفه ای را از این سیستم عرضه خواهم کرد. خوشحال خواهم شد پیشنهادات خود را پیرامون قابلیت ها و نکات دیگر درباره این سیستم مطرح بفرمائید.