# لوحة مراقبة 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. بعد ما ياخد رابط عام، افتحه وانتظر دقيقة لأول فحص، وهتشوف الداشبورد شغال لايف.

## ملاحظات مهمة

- **البيانات مؤقتة داخل الحاوية**: `dashboard/data/` بتتكتب جوه نفس الحاوية. لو الحاوية اتعاد تشغيلها، البيانات التاريخية بتضيع ويبدأ الجمع من الصفر. لو محتاج الاحتفاظ بالتاريخ عبر إعادة التشغيل، اربط مجلد `dashboard/data/` بـ **Ghaymah Block Storage** (Persistent Volume) بدل ما يفضل جوه الحاوية.
- **حماية الموقع (403)**: بعض الشبكات السحابية بترجع `403 Forbidden` لو الموقع عنده حماية ضد البوتات. لو حصل كده وأنت متأكد إن الموقع شغال فعليًا، جرب تشغيل المراقبة من شبكة/سيرفر تاني.
- **معدل الفحص**: الداشبورد بيحدّث نفسه كل 60 ثانية تلقائيًا (`REFRESH_INTERVAL_MS` في `app.js`)، بالتوازي مع دورة الفحص نفسها كل 60 ثانية في `monitor.py`.
