دليل عملي

مراقبة استباقية على VPS: Beszel و‎Uptime Kuma v2

الأمان والمراقبة11 دقيقةً للقراءةعدد الخطوات: 7

يتوقف خدمة PostgreSQL دون أن تُطلق أي تنبيه يتعلق بالقرص. يتصل العميل. تعلم بالعطل في نفس الوقت الذي يعلم فيه هو. هذا السيناريو الموثّق والمُشارَك في المجتمع في أكتوبر 2026، يكشف مشكلة أدوات المراقبة أحادية الطبقة: كل أداة تُراقب ما صُمِّمت له فحسب، ولا شيء غير ذلك. يُغطي الجمع بين Beszel و‏Uptime Kuma v2 الجانبين معاً — مقاييس النظام على كل مضيف، والتحقق من التوافر من طرف لطرف — بتكلفة موارد أقل من موقع WordPress خامل.

المحتويات· لماذا المراقبة الاستباقية، ولماذا لا تكفي الأدوات الكلاسيكية1/9
  1. 01لماذا المراقبة الاستباقية، ولماذا لا تكفي الأدوات الكلاسيكية
  2. 02ما تُقدّمه هذه المجموعة للوكالة عملياً
  3. 03متطلبات الموارد المُحدَّدة
  4. 04النشر الكامل: مركز Beszel والوكلاء و‏Uptime Kuma v2 والتنبيهات
  5. 05مخاطر يجب معرفتها قبل الإطلاق في الإنتاج
  6. 06تغطية التنبيهات حسب تهيئة المجموعة
  7. 07التصليب: عزل خادم VPS المراقبة
  8. 08استكشاف أخطاء المشكلات الشائعة
  9. 09للمزيد

لماذا المراقبة الاستباقية، ولماذا لا تكفي الأدوات الكلاسيكية

التنبيه التفاعلي — الذي يصل بعد أن يكون العميل قد اتصل بالفعل — لا يحمي العلاقة، بل يُصلحها. الفرق بين الحالتين ليس حظاً، بل هو مسألة تغطية.

أداة مراقبة التوافر مثل ‏Uptime Kuma تتحقق من استجابة خدمة على منفذ أو رابط URL. لكنها لا تعلم إذا كانت PostgreSQL تعمل خارج هذا المنفذ، أو إذا كانت ذاكرة الحاوية على وشك الامتلاء، أو إذا كان قرص السجلات يمتلئ بمعدل 200 ميغابايت في الساعة. في المقابل، أداة مقاييس النظام مثل ‏Beszel تُراقب استهلاك كل مضيف باستمرار، لكنها لا تختبر الخدمات التطبيقية من طرف لطرف.

الحادثة الموثّقة على ‏Lemmy في 11 أكتوبر 2026 (112 تصويتاً) تُجسّد هذا تماماً: توقفت PostgreSQL على خادم ‏VPS دون أن تُطلق أي تنبيه قرص. لم يُتجاوز أي حد مساحة. كان التحقق على المستوى التطبيقي هو الوحيد القادر على الكشف عن التوقف — وهو ما لم يكن المشغّل يملكه.

تُعالج مجموعة Beszel و‏Uptime Kuma v2 كلا الجانبين. يُراقب Beszel مقاييس كل مضيف (المعالج، والذاكرة، والقرص، والشبكة، والحاويات) من مركز تجميع واحد. يتحقق Uptime Kuma v2 من توافر الخدمات المكشوفة مع قنوات تنبيه قابلة للتهيئة. كلاهما مفتوح المصدر، مستضاف ذاتياً، ويُنصب على ‏VPS مخصص لمراقبة أسطولك.

ما تُقدّمه هذه المجموعة للوكالة عملياً

  • عرض موحّد لجميع خوادم عملائك في واجهة Beszel واحدة، دون تكثير وصلات SSH.
  • تنبيهات المقاييس (المعالج، الذاكرة، القرص، الشبكة) بعتبات قابلة للتهيئة لكل مضيف.
  • فحوصات توافر HTTP(s) و‏TCP و‏DNS وشهادات SSL عبر Uptime Kuma v2 — كل 60 ثانية افتراضياً.
  • إشعارات Telegram أو SMTP جاهزة في الساعة الأولى، دون اشتراك في خدمات خارجية.
  • الكشف عن اكتمال القرص أو تسريب الذاكرة قبل أن يحجب خدمة تطبيقية.
  • صفحات حالة Uptime Kuma العامة القابلة للمشاركة مع العملاء النهائيين.
  • إجمالي استهلاك المجموعة أقل من 150 ميغابايت من ذاكرة الوصول العشوائي على خادم VPS المراقبة.
  • نشر قابل للتكرار عبر Docker Compose، قابل للإصدار وإعادة النشر في دقائق.

متطلبات الموارد المُحدَّدة

لاستضافة مركز Beszel و‏Uptime Kuma v2 على خادم VPS مخصص للمراقبة:

الموارد الدنيا. خادم VPS بنواة معالج واحدة و1 غيغابايت من الذاكرة كافٍ لمراقبة نحو عشرة مضيفين مع Beszel ونحو خمسين مراقِباً مع Uptime Kuma. عملياً، يستهلك مركز Beszel نحو 50 ميغابايت من الذاكرة و‏Uptime Kuma v2 نحو 100 ميغابايت — أقل من 200 ميغابايت إجمالاً في وضع الخمول، وفق قياسات المجتمع. لأسطول من 20 إلى 50 خادم VPS، خصّص 2 غيغابايت من الذاكرة. يخزّن Beszel بياناته في SQLite؛ خصّص 5 إلى 10 غيغابايتات من القرص للاحتفاظ بتاريخ يمتد لأشهر عديدة.

البرامج المطلوبة. Docker و‏Docker Compose مثبّتان على خادم VPS المراقبة. نطاق أو نطاق فرعي يشير إلى هذا الخادم (‏monitoring.your-domain.com) للوكيل العكسي و‏SSL. المنافذ 80 و443 مفتوحة للوكيل العكسي، والمنفذ 8090 أو أي منفذ تختاره لمركز Beszel.

على خوادم VPS المُراقَبة. كل مضيف يُراقَب يستقبل فقط وكيل Beszel — ثنائي خفيف أو حاوية Docker تستهلك نحو 10 ميغابايتات من الذاكرة. لا حاجة لأي تغيير في جدار الحماية العام: الوكيل هو من يُنشئ الاتصال نحو المركز، وليس العكس.

النشر الكامل: مركز Beszel والوكلاء و‏Uptime Kuma v2 والتنبيهات

  1. إنشاء هيكل Docker Compose على خادم VPS المراقبة

    اتصل بخادم VPS المخصص للمراقبة. أنشئ دليل عمل وملف Compose:

    mkdir -p /opt/monitoring && cd /opt/monitoring

    أنشئ ملف docker-compose‎.yml بالخدمتين:

    services:
      beszel:
        image: henrygd/beszel:latest
        restart: unless-stopped
        volumes:
          - ./beszel_data:/beszel_data
        ports:
          - "8090:8090"
        environment:
          - DATA_DIR=/beszel_data
    
      uptime-kuma:
        image: louislam/uptime-kuma:2
        restart: unless-stopped
        volumes:
          - ./uptime-kuma-data:/app/data
        ports:
          - "3001:3001"
        healthcheck:
          test: ["CMD", "node", "extra/healthcheck"]
          interval: 30s
          timeout: 10s
          retries: 3

    لاحظ كتلة healthcheck على Uptime Kuma: إنها ضرورية لتجنب فخ حلقة التعطل (انظر قسم المخاطر).

  2. تشغيل المجموعة وإنشاء حسابات المدير

    شغّل الحاويتين:

    docker compose up -d

    تحقق من أن الحاويتين في حالة healthy أو running:

    docker compose ps

    ادخل إلى Beszel على http://<ip-vps>:8090 وأنشئ حساب المدير عند أول وصول. افعل الشيء ذاته مع Uptime Kuma على http://<ip-vps>:3001. يجب بعد ذلك وضع كلتا الواجهتين خلف وكيل عكسي مع SSL لتجنب كشفهما عبر HTTP العادي.

  3. نشر وكيل Beszel على كل خادم VPS للمراقبة

    على كل خادم VPS عميل يُراد مراقبته، انسخ المفتاح العام المُنشأ في واجهة Beszel (الإعدادات ← مفتاح SSH)، ثم نفّذ:

    curl -sL https://raw.githubusercontent.com/henrygd/beszel/main/supplemental/scripts/install-agent.sh | bash -s -- -p 45876 -k "<your-public-key>"

    بدلاً من ذلك، استخدم Docker على المضيف المُراقَب:

    services:
      beszel-agent:
        image: henrygd/beszel-agent:latest
        restart: unless-stopped
        network_mode: host
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - KEY=<your-public-key>
          - PORT=45876

    في Beszel، أضف كل مضيف من الواجهة (الأنظمة ← إضافة نظام) بتحديد عنوان IP ومنفذ الوكيل. يُنشئ المركز الاتصال نحو الوكيل: لا يحتاج المضيف المُراقَب إلى كشف هذا المنفذ للعموم.

  4. تهيئة تنبيهات المقاييس في Beszel

    في Beszel، افتح تفاصيل أي نظام وانتقل إلى تبويب التنبيهات. هيّئ عتبات للمقاييس الحرجة:

    - القرص: تنبيه عند 80% وتنبيه حرج عند 90% — يغطي سيناريو PostgreSQL من مقدمة المقال.
    - الذاكرة: تنبيه إذا تجاوز الاستخدام 85% لمدة 5 دقائق متواصلة.
    - المعالج: تنبيه إذا تجاوزت النسبة 90% لأكثر من 3 دقائق.

    يدعم Beszel كلاً من Telegram و‏Discord و‏Slack و‏Gotify و‏Ntfy والـ Webhooks العامة. للتنبيهات عبر Telegram، تحتاج إلى رمز Bot (من @BotFather) ومعرّف محادثتك أو مجموعتك.

  5. تهيئة مراقبي Uptime Kuma v2 وتنبيهات SMTP أو Telegram

    في Uptime Kuma، ابدأ بتهيئة قناة إشعار (الإعدادات ← الإشعارات). خياران شائعان:

    Telegram. أدخل رمز Bot ومعرّف المحادثة. Bot ذاتُه المستخدم مع Beszel يعمل — استخدم Bot واحداً للأداتين وميّزهما بقنوات مختلفة.

    SMTP. أدخل خادم SMTP والمنفذ (587 مع STARTTLS) وبيانات الاعتماد وعنوان الوجهة. استخدم حساباً مخصصاً لإرسال التنبيهات.

    أنشئ بعد ذلك مراقبين لكل خدمة حرجة: رابط URL بـ HTTP(s) للمواقع، و‏TCP لقواعد البيانات والمنافذ التطبيقية. لحالة PostgreSQL، أضف مراقباً TCP على المنفذ 5432 لكل خادم VPS يستضيف نسخة — إذا توقفت PostgreSQL، سيتوقف المنفذ عن الاستجابة وسيُطلق التنبيه في ثوانٍ.

  6. وضع كل شيء خلف وكيل عكسي مع SSL

    أضف خدمة nginx أو Caddy إلى Compose لعرض Beszel و‏Uptime Kuma عبر HTTPS:

      caddy:
        image: caddy:alpine
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile
          - caddy_data:/data

    مع Caddyfile بسيط:

    monitoring.your-domain.com {
        reverse_proxy beszel:8090
    }
    
    status.your-domain.com {
        reverse_proxy uptime-kuma:3001
    }

    يُصدر Caddy شهادات ‏Let's Encrypt تلقائياً ويجدّدها. احذف أقسام ports من beszel و‏uptime-kuma في Compose بمجرد وضعهما خلف وكيل — يجب ألا يكونا قابلَين للوصول مباشرةً.

  7. التحقق من الإعداد وتهيئة الاحتفاظ بالبيانات

    اختبر كل شيء بإيقاف خدمة يدوياً على خادم VPS تجريبي (docker compose stop <service>) والتحقق من وصول تنبيه Telegram أو SMTP خلال أقل من دقيقتين.

    بالنسبة لـ Beszel، هيّئ الاحتفاظ بالبيانات في الإعدادات ← الاحتفاظ: القيمة الافتراضية هي 7 أيام للبيانات عالية الدقة و30 يوماً للتجميعات الساعية. اضبطها وفق سعة قرصك.

    بالنسبة لـ Uptime Kuma، يُهيَّأ الاحتفاظ في الإعدادات ← متقدم ← التنظيف التلقائي. احتفظ بـ 90 يوماً على الأقل لامتلاك اتجاهات uptime شهرية لتقديمها للعملاء.

مخاطر يجب معرفتها قبل الإطلاق في الإنتاج

حلقة تعطل Docker المُبلَّغ عنها على أنها تعمل — مشكلة Uptime Kuma رقم #7956. بدون healthcheck في Compose، قد يُبلّغ Docker عن حاوية Uptime Kuma بوصفها running بينما هي في حلقة إعادة تشغيل. سيُظهر مراقب Uptime Kuma الذي يراقب نفسه (TCP على المنفذ 3001) إيجابية زائفة: المنفذ يستجيب خلال الفترة القصيرة بين عمليتي إعادة تشغيل. الحل هو بالضبط كتلة healthcheck المُوضَّحة في الخطوة الأولى — إنها تستخدم السكريبت المضمّن في الصورة لاختبار الحالة الداخلية للتطبيق، لا مجرد وجود العملية. يضع Docker حينئذٍ الحاوية في حالة unhealthy إذا فشل الفحص ثلاث مرات متتالية، ويرى مراقب Uptime Kuma ذلك.

وكيل Beszel مع network_mode: host. إذا كانت المضيفات المُراقَبة تشغّل حاويات، يحتاج وكيل Beszel إلى الوصول إلى مقبس Docker (/var/run/docker.sock) لرفع مقاييس كل حاوية. في وضع الشبكة الجسرية، يكون المقبس قابلاً للوصول لكن عنوان IP المُرفوع من الوكيل قد يكون عنوان شبكة Docker الداخلية. يُفضَّل استخدام network_mode: host على الوكيل لضمان رؤية مركز Beszel لعنوان IP العلني للخادم.

تنبيهات Beszel لا تحل محل الفحوصات التطبيقية. يُراقب Beszel موارد النظام وتوافر حاويات Docker. لا يختبر أن تطبيقاً يستجيب بشكل صحيح لطلب HTTP أو أن PostgreSQL تقبل اتصالات. هذان المستويان متكاملان: يكشف Beszel التشبع الذي يسبق العطل، بينما يؤكد Uptime Kuma العطل حين يحدث.

تغطية التنبيهات حسب تهيئة المجموعة

مرّر الجدول أفقيًا

سيناريو العطلBeszel وحدهUptime Kuma وحدهBeszel + Uptime Kuma v2
امتلاء القرص بنسبة 95%تنبيه عند العتبة المهيّأةلا يُكشفتنبيه Beszel قبل العطل
توقف PostgreSQL (منفذ TCP معطّل)لا يُكشف (خدمة خارج Docker)تنبيه TCP في أقل من دقيقتينتنبيه Uptime Kuma TCP
حاوية في حلقة تعطلتنبيه إذا أثّر على المعالج/الذاكرةإيجابية زائفة بدون healthcheckيُكشف إذا كان healthcheck موضوعاً
تسريب ذاكرة تدريجيتنبيه على عتبة الذاكرةلا يُكشفتنبيه Beszel استباقي
شهادة SSL تنتهي في 7 أيامغير مُراقَبةتنبيه انتهاء SSLتنبيه Uptime Kuma SSL
خادم VPS غير قابل للوصول (شبكة أو مضيف معطّل)المركز يفقد الوكيلتنبيه TCP/HTTPإشارة مزدوجة، متقاربة

التصليب: عزل خادم VPS المراقبة

خادم VPS المراقبة أصل حرج: إذا توقف، تفقد الرؤية على كل شيء آخر. ثلاث قواعد لتصليبه.

أولاً، لا تستضف تطبيقات العملاء على هذا الخادم. يجب أن يكون حمله متوقعاً ودوره الوحيد هو المراقبة.

ثانياً، أغلق جميع المنافذ غير الضرورية بجدار حماية خادم VPS. فقط 80 و443 ومنفذ SSH (منقول إلى منفذ غير قياسي) يجب أن تكون قابلة للوصول من الإنترنت. منفذ وكيل Beszel (45876 افتراضياً) يجب فتحه فقط من عناوين IP خوادم VPS الأخرى، وليس من الإنترنت بأكمله.

ثالثاً، أضف مراقباً Uptime Kuma خارجياً — مثلاً من خدمة فحص HTTP مجانية — يتحقق من استجابة نسختك من Uptime Kuma. بدون هذه الطبقة الخارجية، يمر عطل خادم VPS المراقبة نفسه دون أن يُلاحَظ.

استكشاف أخطاء المشكلات الشائعة

يظهر وكيل Beszel غير متصل فوراً بعد الإضافة. تحقق من أن منفذ الوكيل (45876 افتراضياً) قابل للوصول من المركز. على المضيف المُراقَب، اختبر بـ nc -zv <hub-ip> 8090 — إذا فشل الاتصال، المشكلة في جدار حماية المركز. الوكيل نفسه لا يحتاج إلى فتح أي منفذ وارد.

Uptime Kuma لا يستقبل تنبيهات Telegram. السبب الأكثر شيوعاً هو انحراف ساعة الحاوية. تحقق بـ docker exec uptime-kuma date أن الوقت يتطابق مع UTC الحقيقي. إذا لم يكن كذلك، أضف /etc/localtime:/etc/localtime:ro في أحجام خدمة Uptime Kuma.

مركز Beszel لا يبدأ أو يفقد بياناته بعد إعادة التشغيل. تحقق من أن الحجم ./beszel_data يملكه ‏UID المستخدم من قِبل حاوية Beszel. خطأ في صلاحيات مجلد البيانات يمنع SQLite من الكتابة: chown -R 1000:1000 ./beszel_data يُصلح المشكلة في معظم الحالات.

Uptime Kuma في حالة unhealthy عند البدء. قد تستغرق صورة v2 من 30 إلى 60 ثانية لتبدأ بالكامل قبل أن يَنجح الـ healthcheck. هذا طبيعي. إذا بقيت الحاوية unhealthy بعد دقيقتين، راجع السجلات: docker compose logs uptime-kuma.

للمزيد

تُغطي هذه المجموعة المستويين الأساسيين: مقاييس النظام والتحقق من التوافر. للمستوى الثالث — قابلية التتبع وتحليل اتجاهات الحمل الدقيقة — تُعدّ مجموعة Grafana و‏Prometheus الخطوة التالية الطبيعية. إنها أكثر استهلاكاً للموارد (خصّص 2 غيغابايت من الذاكرة)، لكنها تفتح PromQL ولوحات التحكم المخصصة. يغطي مقال مراقبة VPS مع Grafana و‏Prometheus هذا النشر خطوة بخطوة.

للنسخ الاحتياطية لخادم VPS المراقبة نفسه — لتجنب إعادة بناء كل الإعداد عند الفقدان — استراتيجية 3-2-1 مع Restic وتخزين S3 تنطبق مباشرةً على أحجام Docker لهذه المجموعة.

إذا كنت تُدير عدة خوادم عملاء من منصة واحدة، تُفصّل صفحة ‏/solutions/agences كيف تُمركز ServOrbit مراقبة أسطولك على VPS Start.

راقب أسطولك من خادم VPS واحد

أنت تُدير عدة خوادم لعملائك. مركز مراقبة أسطولك على خادم VPS من ServOrbit مع وصول root وعنوان IPv4 مخصص و‏Docker — مجموعة Beszel و‏Uptime Kuma v2 تعمل على الخطة الأساسية.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة