هذا المقال يتطلّب مستوى: مبتدئ
أخطر عطل في السيرفر مش اللي بيديك خطأ أحمر. أخطره اللي بيسكت. مهمة cron ممكن تقف من أسبوعين وانت فاكر النسخ الاحتياطي بيتاخد كل ليلة. المفتاح الميّت هو اللي بيكشف السكوت ده قبل ما يتحوّل لكارثة، وهتعمله في أقل من 10 دقايق.
المشكلة باختصار
المراقبة العادية بتشتغل بمنطق "بلّغني لو حصل خطأ". المشكلة إن مهمة cron لمّا تقف تمامًا، مفيش خطأ بيتبعت أصلًا. السيرفر اتعمله reboot، أو المسار اتغيّر، أو الـ cron نفسه اتوقف. النتيجة: صمت كامل، وانت بتفسّر الصمت غلط على إنه "كله تمام".
السيناريو الواقعي: عندك سكربت بياخد نسخة احتياطية لقاعدة بياناتك كل ليلة الساعة 2. السكربت وقف يوم 3 من الشهر بسبب القرص امتلأ. مفيش حد اتبلّغ. يوم 17 القرص بايظ، وآخر نسخة سليمة عمرها 14 يوم. خسرت أسبوعين شغل عشان كنت بتراقب النجاح، مش الغياب.
المفهوم بمثال بسيط الأول
تخيّل عندك بوّاب في مصنع، شغلته يتّصل بيك كل ساعة يطمنك إن كل حاجة تمام. طول ما بيتّصل، انت مرتاح. الساعة اللي ميتّصلش فيها، انت فورًا بتقلق: يمكن نام، يمكن حصله حاجة. لاحظ الخدعة الذكية هنا: انت مش مستني مكالمة تقولك "في مشكلة". انت بتراقب غياب مكالمة "أنا تمام". السكوت نفسه هو الإنذار.
ده بالظبط المفتاح الميّت. مهمة cron بتلعب دور البوّاب: كل ما تخلّص شغلها بنجاح، تبعت "نبضة" لخدمة خارجية تقول "أنا اشتغلت". الخدمة الخارجية بتعرف إنها المفروض تسمع نبضة كل يوم مثلًا. أول ما تعدّي المدة من غير نبضة، هي اللي بتصحّى وتبعتلك تنبيه.
علميًا: المفتاح الميّت (Dead Man's Switch) آلية بتطلق إجراء تلقائي عند توقّف إشارة دورية متوقّعة، مش عند وصول إشارة خطأ. أصل الاسم من مقابض القطارات اللي بتوقف القطار لو السائق ساب المقبض (فقد الوعي). في المراقبة بنسميها كمان "heartbeat monitoring": المهمة بتنبض، وغياب النبضة هو الحدث.
الحل العملي في 3 خطوات
هنستخدم healthchecks.io — خدمة مجانية للاستخدام البسيط (حتى 20 فحص مجانًا)، ومفتوحة المصدر لو حابب تشغّلها على سيرفرك. الفكرة إنها بتديك رابط فريد، ومهمتك بس تعمله ping بعد ما تنجح.
- اعمل حساب على healthchecks.io وأنشئ فحص جديد، وحدّد الجدول المتوقّع (مثلًا: كل يوم مرة، مع مهلة سماح ساعة).
- هياخد لك رابط زي
https://hc-ping.com/your-uuid. - عدّل مهمة الـ cron بحيث تعمل ping للرابط ده بعد نجاح السكربت فقط.
الطريقة الأساسية: ping بعد النجاح
# /etc/crontab أو crontab -e
# النسخة الاحتياطية كل ليلة الساعة 2، وبعد النجاح فقط نبعت نبضة
0 2 * * * /opt/scripts/backup.sh && curl -fsS -m 10 --retry 3 https://hc-ping.com/your-uuid