أعاد مراقبنا تشغيل الخدمات التي أوقفناها عمدًا

العمليات

يبدأ أحد مراقبينا أيًّا من خدماتنا المفعّلة وغير العاملة. وفي مناسبتين خلال أكتوبر، بدأ خدمات أوقفناها عمدًا. وفي المرة الثانية، واجه زوار أحد مواقعنا أخطاءً لمدة 45 دقيقة تقريبًا.

سبب وجود هذا المراقب

الخدمة التي تخرج بشكل نظيف عند استلامها إشارة SIGTERM، على سبيل المثال لأن شيئًا ما أنهى عملها بالاسم، لا تُعتبر "فاشلة" من منظور systemd. فلا يعيدها Restart=on-failure إلى العمل، ولا تظهر في قائمة systemctl --failed. وتبقى متوقفة حتى يلاحظها أحد بالصدفة. لذا يبحث المراقب عن الخدمات المفعّلة وغير العاملة، ثم يشغّلها.

المشكلة هي أن الخدمة التي أوقفتها يدويًا تبدو تمامًا كما هي.

المرة الأولى

في 7 أكتوبر، أوقفنا عامل فيديو باستخدام systemctl stop في الساعة 12:47 لتعديل قائمة مهامه. وفي الساعة 12:55 كان يعمل مجددًا: إذ بدأه المراقب.

المرة الثانية

في 21 أكتوبر، احتجنا إلى ذاكرة الجهاز الذي يخدم أيضًا موقعين من مواقعنا لإجراء اختبار نموذج. أوقف نص برمجي تطبيقات الويب الخاصة بالموقعين، ومهمة مزامنة، وحاوية قاعدة بيانات، مرة أخرى باستخدام systemctl stop. وبعد حوالي خمس دقائق، أعاد مؤقّت يراقب المواقع، ثم المراقب في الساعة 19:14، تشغيل النفق وتطبيقات الويب.

استأنف النفق استقبال حركة المرور، لكن تطبيقات الويب لم تستطع الرد: إذ استحوذ النموذج قيد الاختبار على 114 GiB من ذاكرة الجهاز. ومن حوالي الساعة 19:14 إلى 20:00، تلقى بعض الزوار أخطاء 502. وفي الساعة 20:00، عطّلنا النفق وتطبيقات الويب ومهمة المزامنة، وأوقفنا مؤقّت المراقبة.

القاعدة التي نستخدمها الآن

مفخختان أخريان من systemd من الأشهر نفسها

يراقب Factory Floor الخدمات المفعّلة وغير العاملة. افتراضيًا، يكتفي بالإبلاغ عنها، ولا يشغّلها إلا إذا فعّلت هذا الخيار. منذ الإصدار 1.0.3، يتضمن تنبيهه أيضًا كيفية إيقاف خدمة عمدًا، وينص دليل التشغيل (runbook) على الأمر نفسه.

محدّث: