# لوحة مراقبة mithal.space مشروع كامل: سكريبت بايثون بيجمع 5 مقاييس كل دقيقة من `mithal.space`، وداشبورد HTML/CSS/JS بيعرضها لايف. رابط المشروع: https://mithal-monitor-48d71299e1f2.hosted.ghaymah.systems/ ## البنية ``` 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 ``` 2. في لوحة تحكم 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: مفعّل 3. بعد ما ياخد رابط عام، افتحه وانتظر دقيقة لأول فحص، وهتشوف الداشبورد شغال لايف. ## ملاحظات مهمة - **البيانات مؤقتة داخل الحاوية**: يمكن ربط الموقع ب**Ghaymah Block Storage** (Persistent Volume) للحفاظ على logs من الضياع - **معدل الفحص**: الداشبورد بيحدّث نفسه كل 60 ثانية تلقائيًا (`REFRESH_INTERVAL_MS` في `app.js`)، بالتوازي مع دورة الفحص نفسها كل 60 ثانية في `monitor.py`.