أتمتة مراقبة الـ Uptime لمواقعك عبر Uptime Kuma و Telegram
لو موقعك وقع الساعة 3 الفجر وعرفت من عميل غضبان الصبح، المقال ده هيوفرلك النظام اللي بيديك التنبيه في أقل من 90 ثانية من لحظة الـ downtime، بدون ما تدفع اشتراك شهري لخدمة SaaS.
المشكلة باختصار
الأدوات الجاهزة زي UptimeRobot أو Pingdom ممتازة لكن فيها قيود واضحة. الخطة المجانية فحص كل 5 دقايق فقط، وأول إشعار بيوصل بعد دقيقتين إضافيين على الأقل. يعني ممكن يعدي على موقعك 7 دقايق كاملة downtime قبل ما تعرف. لو عندك أكتر من 50 endpoint، المجانية مش كفاية، والمدفوع بيبدأ من 7$ شهرياً ويزيد مع كل monitor. Uptime Kuma أداة مفتوحة المصدر بتشتغل عندك على VPS صغير، بتعمل نفس الشغل مع Telegram push في ثواني.
فكرة سريعة للمبتدئين قبل ما ندخل في التقني
تخيّل إنك مشغّل صديق يدق على باب محلك كل دقيقة يتأكد إنه لسه فاتح. طالما فيه رد من جوه، كل حاجة تمام. أول ما يدق ومحدش رد، بيبعتلك رسالة على تلغرام: "المحل قفل يا بشمهندس". ده بالظبط مفهوم الـ uptime monitoring.
بشكل علمي: أداة خارجية بتعمل HTTP GET على Endpoint معيّن في فترات دورية محددة (polling). بتقيس الـ status_code، الـ response_time_ms، وأحياناً محتوى الرد (Keyword matching). لو الرد طلع خارج النطاق المقبول (مثلاً مش 2xx) أو ماجاش في الـ timeout، بيُعتبر الـ service down، وبيتم تنفيذ notification pipeline. Uptime Kuma بيدعم أنواع فحص إضافية: TCP (للبورتات زي DB)، Ping (ICMP)، DNS، وPush (اللي فيه الجهاز المراقَب هو اللي بيبعت heartbeat للسيرفر — مفيد للـ cron jobs).
ليه Uptime Kuma بالذات
- الفحص كل 20 ثانية كحد أدنى بدل 5 دقايق في الخطة المجانية لمعظم المنافسين.
- أكتر من 90 قناة تنبيه مبنية جاهزة: Telegram، Discord، Slack، Email (SMTP)، Webhook مخصص، Gotify، ntfy.
- Status Page عامة قابلة للنشر على دومين فرعي زي
status.yourdomain.comلعملائك. - استهلاك خفيف: حوالي 120MB RAM لـ 50 monitor، يشتغل مرتاح على VPS بـ 4–5$ شهرياً.
- SQLite كقاعدة بيانات افتراضية، يعني مفيش تنصيب إضافي.
الخطوة 1 — تشغيل Uptime Kuma بـ Docker
الافتراض: عندك سيرفر Linux (Ubuntu 22.04 LTS أو Debian 12) مع Docker و docker compose متنصبين. لو لسه، ركّبهم بسطر واحد:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER # وبعدها اعمل logout/login