Ghaymah intern
هذا الالتزام موجود في:
103
q5-mithal-monitor/README.md
Normal file
103
q5-mithal-monitor/README.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# لوحة مراقبة 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
|
||||
```
|
||||
|
||||
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. بعد ما ياخد رابط عام، افتحه وانتظر دقيقة لأول فحص، وهتشوف الداشبورد شغال لايف.
|
||||
|
||||
## ملاحظات مهمة
|
||||
|
||||
- **البيانات مؤقتة داخل الحاوية**: `dashboard/data/` بتتكتب جوه نفس الحاوية. لو الحاوية اتعاد تشغيلها، البيانات التاريخية بتضيع ويبدأ الجمع من الصفر. لو محتاج الاحتفاظ بالتاريخ عبر إعادة التشغيل، اربط مجلد `dashboard/data/` بـ **Ghaymah Block Storage** (Persistent Volume) بدل ما يفضل جوه الحاوية.
|
||||
- **حماية الموقع (403)**: بعض الشبكات السحابية بترجع `403 Forbidden` لو الموقع عنده حماية ضد البوتات. لو حصل كده وأنت متأكد إن الموقع شغال فعليًا، جرب تشغيل المراقبة من شبكة/سيرفر تاني.
|
||||
- **معدل الفحص**: الداشبورد بيحدّث نفسه كل 60 ثانية تلقائيًا (`REFRESH_INTERVAL_MS` في `app.js`)، بالتوازي مع دورة الفحص نفسها كل 60 ثانية في `monitor.py`.
|
||||
المرجع في مشكلة جديدة
حظر مستخدم