لوحة مراقبة 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 مباشرة وتبنيه بنفسها):
- ارفع المشروع على 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
-
في لوحة تحكم Ghaymah:
- أنشئ Project جديد
- Deploy Application → Git-Based Deployment → Deploying from Public GitHub
- Application Name:
mithal-monitor - Repository URL: رابط الريبو
- Branch/Commit SHA: أول commit
- Port:
8080 - Public Access: مفعّل
-
بعد ما ياخد رابط عام، افتحه وانتظر دقيقة لأول فحص، وهتشوف الداشبورد شغال لايف.
ملاحظات مهمة
- البيانات مؤقتة داخل الحاوية:
dashboard/data/بتتكتب جوه نفس الحاوية. لو الحاوية اتعاد تشغيلها، البيانات التاريخية بتضيع ويبدأ الجمع من الصفر. لو محتاج الاحتفاظ بالتاريخ عبر إعادة التشغيل، اربط مجلدdashboard/data/بـ Ghaymah Block Storage (Persistent Volume) بدل ما يفضل جوه الحاوية. - حماية الموقع (403): بعض الشبكات السحابية بترجع
403 Forbiddenلو الموقع عنده حماية ضد البوتات. لو حصل كده وأنت متأكد إن الموقع شغال فعليًا، جرب تشغيل المراقبة من شبكة/سيرفر تاني. - معدل الفحص: الداشبورد بيحدّث نفسه كل 60 ثانية تلقائيًا (
REFRESH_INTERVAL_MSفيapp.js)، بالتوازي مع دورة الفحص نفسها كل 60 ثانية فيmonitor.py.