الملفات
ghaymah-exam-Moataz-Gamal-H…/q5-mithal-monitor/README.md

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`.