الملفات
ghaymah-exam-Moataz-Gamal-H…/q5-mithal-monitor
2026-07-28 14:17:17 +03:00
..
2026-07-28 14:17:17 +03:00
2026-07-28 14:17:17 +03:00
2026-07-28 14:17:17 +03:00
2026-07-28 14:17:17 +03:00
2026-07-28 14:17:17 +03:00

لوحة مراقبة mithal.space

مشروع كامل: سكريبت بايثون بيجمع 5 مقاييس كل دقيقة من mithal.space، وداشبورد HTML/CSS/JS بيعرضها لايف.

البنية

mithal-monitor/
├── monitor.py              ← يجمع المقاييس كل 60 ثانية
├── start.sh                 ← يشغّل monitor.py + سيرفر الداشبورد معًا
├── Dockerfile
├── dashboard/
│   ├── index.html
│   ├── style.css
│   ├── app.js
│   └── data/                 ← يتكتب فيه تلقائيًا وقت التشغيل
│       ├── metrics_history.json   (يقرأه الداشبورد)
│       └── metrics_log.csv        (أرشيف كامل لكل فحص)
└── README.md

المقاييس المُجمّعة كل دقيقة

المقياس الطريقة
Latency زمن HTTP GET / بالميلي ثانية
Uptime status_code بين 200-399 = up
SSL الاتصال بالمنفذ 443 وقراءة تاريخ انتهاء الشهادة
DNS زمن socket.getaddrinfo() بالميلي ثانية
Search Response زمن GET /search?q=test

⚠️ رابط البحث SEARCH_URL في monitor.py مبني على تخمين معقول (/search?q=). لو الرابط الفعلي لصفحة نتائج البحث في mithal.space مختلف، عدّل المتغير في أول الملف.

التجربة المحلية (بدون Docker)

cd mithal-monitor
python3 monitor.py

سيبه شغال دقيقة أو اتنين، هيبدأ يطبع نتائج كل فحص في الترمينال، وينشئ:

dashboard/data/metrics_history.json
dashboard/data/metrics_log.csv

في تاب تاني، شغّل سيرفر للداشبورد:

cd dashboard
python3 -m http.server 8080

افتح المتصفح على:

http://localhost:8080/

التجربة بالـ Docker

docker build -t mithal-monitor:local .
docker run -d -p 8080:8080 --name mithal-monitor mithal-monitor:local

افتح http://localhost:8080/ وانتظر دقيقة عشان أول فحص يكتمل ويظهر في الداشبورد.

docker logs -f mithal-monitor

هتشوف نتائج كل فحص لايف.

docker stop mithal-monitor
docker rm mithal-monitor

النشر على ghaymah.systems

بما إن Ghaymah بتستخدم Git-Based Deployment (تاخد الكود من GitHub مباشرة وتبنيه بنفسها):

  1. ارفع المشروع على GitHub:
git init
git add .
git commit -m "mithal.space monitoring dashboard"
git branch -M main
git remote add origin https://github.com/Moetaz-Alfy/mithal-monitor.git
git push -u origin main
  1. في لوحة تحكم Ghaymah:

    • أنشئ Project جديد
    • Deploy ApplicationGit-Based Deployment → Deploying from Public GitHub
    • Application Name: mithal-monitor
    • Repository URL: رابط الريبو
    • Branch/Commit SHA: أول commit
    • Port: 8080
    • Public Access: مفعّل
  2. بعد ما ياخد رابط عام، افتحه وانتظر دقيقة لأول فحص، وهتشوف الداشبورد شغال لايف.

ملاحظات مهمة

  • البيانات مؤقتة داخل الحاوية: dashboard/data/ بتتكتب جوه نفس الحاوية. لو الحاوية اتعاد تشغيلها، البيانات التاريخية بتضيع ويبدأ الجمع من الصفر. لو محتاج الاحتفاظ بالتاريخ عبر إعادة التشغيل، اربط مجلد dashboard/data/ بـ Ghaymah Block Storage (Persistent Volume) بدل ما يفضل جوه الحاوية.
  • حماية الموقع (403): بعض الشبكات السحابية بترجع 403 Forbidden لو الموقع عنده حماية ضد البوتات. لو حصل كده وأنت متأكد إن الموقع شغال فعليًا، جرب تشغيل المراقبة من شبكة/سيرفر تاني.
  • معدل الفحص: الداشبورد بيحدّث نفسه كل 60 ثانية تلقائيًا (REFRESH_INTERVAL_MS في app.js)، بالتوازي مع دورة الفحص نفسها كل 60 ثانية في monitor.py.