Initial Ghaymah tasks setup
هذا الالتزام موجود في:
62
task5-mithal-dashboard/README.md
Normal file
62
task5-mithal-dashboard/README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# المهمة 5 — لوحة مراقبة mithal.space
|
||||
|
||||
## الملفات
|
||||
- `collector.py` — يجمع المقاييس كل دقيقة (latency, uptime, SSL, DNS, search) ويخزنها في:
|
||||
- `metrics.csv` (سجل تاريخي كامل، صف لكل فحص)
|
||||
- `latest.json` (أحدث قراءة، يقرأها الـ dashboard)
|
||||
- `history.json` (آخر 1440 قراءة = 24 ساعة، يقرأها الـ dashboard للرسم البياني والجدول)
|
||||
- `dashboard.html` — يعرض uptime%، رسم بياني لزمن الاستجابة، حالة SSL، وسجل آخر 10 فحوصات
|
||||
- `requirements.txt` — اعتماديات بايثون (`requests`)
|
||||
|
||||
## 1) التشغيل محلياً
|
||||
```bash
|
||||
cd task5-mithal-dashboard
|
||||
pip install -r requirements.txt
|
||||
|
||||
# فحص واحد للتجربة
|
||||
python collector.py --once
|
||||
|
||||
# تشغيل مستمر (يفحص كل دقيقة)
|
||||
python collector.py &
|
||||
|
||||
# تقديم الملفات (dashboard.html + json files) عبر خادم بسيط
|
||||
python -m http.server 8000
|
||||
```
|
||||
افتح المتصفح على: `http://localhost:8000/dashboard.html`
|
||||
|
||||
> ملاحظة: الـ dashboard يقرأ `history.json` و`latest.json` عبر `fetch()`، لذلك
|
||||
> يجب تشغيله من خادم HTTP (مثل `http.server`) وليس بفتح الملف مباشرة (`file://`)
|
||||
> لتفادي قيود CORS في المتصفح.
|
||||
|
||||
## 2) النشر على Ghaymah
|
||||
|
||||
نفس نمط النشر في المهمة 1: نضع `collector.py` و`dashboard.html` خلف سيرفر
|
||||
بسيط (مثال: Flask/`http.server`) داخل حاوية واحدة، وننشرها كتطبيق Ghaymah:
|
||||
|
||||
```dockerfile
|
||||
FROM python:3.11-slim
|
||||
WORKDIR /app
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
COPY collector.py dashboard.html ./
|
||||
EXPOSE 8000
|
||||
# يشغّل التجميع في الخلفية + خادم استضافة الملفات في الواجهة
|
||||
CMD sh -c "python collector.py & python -m http.server 8000"
|
||||
```
|
||||
|
||||
```bash
|
||||
docker build -t mithal-monitor:v1 .
|
||||
docker push registry.ghaymah.systems/<org>/mithal-monitor:v1
|
||||
ghaymah deploy --app mithal-monitor \
|
||||
--image registry.ghaymah.systems/<org>/mithal-monitor:v1 \
|
||||
--port 8000
|
||||
```
|
||||
|
||||
بعد النشر، الرابط الناتج (مثال: `https://mithal-monitor.ghaymah.systems/dashboard.html`)
|
||||
يعرض اللوحة الحية، وتُحدَّث القراءات تلقائياً كل دقيقة عبر `collector.py`
|
||||
الذي يعمل باستمرار داخل نفس الحاوية.
|
||||
|
||||
## 3) ملاحظة حول رابط البحث (Search Response)
|
||||
عدّل المتغير `SEARCH_URL` داخل `collector.py` ليطابق مسار البحث الفعلي في
|
||||
موقع mithal.space (حالياً موضوع كمثال `mithal.space/search?q=test`)، حسب
|
||||
البنية الفعلية للموقع.
|
||||
المرجع في مشكلة جديدة
حظر مستخدم