105 أسطر
3.7 KiB
Markdown
105 أسطر
3.7 KiB
Markdown
# لوحة مراقبة 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`.
|