CronPing — מערכת אמיתית (לא דמו) למעקב uptime של אתרים, עם התראות Telegram כשהאתר נופל.
מותקנת ופעילה ב-zbang-api. ה-scheduler רץ ברקע, בודק את המוניטורים בפועל, וכותב את התוצאות ל-PostgreSQL.
מה זה עושה (באמת)
- HTTP probes אמיתיים — כל מוניטור נבדק לפי האינטרוול שמוגדר (60 שניות עד יום) דרך httpx עם GET/HEAD, timeout מוגדר, וכופן keyword check.
- PostgreSQL persistence — שלוש טבלאות:
cronping_monitors,cronping_checks,cronping_settings. כל בדיקה כתובה לטבלת checks עם status code, response time במ"ש, ושגיאה אם הייתה. - Telegram alerts אמיתיים — כשמוניטור נכשל N בדיקות רצופות (סף מוגדר), המערכת שולחת הודעת Markdown ל-Telegram חדר עם פרטי האתר. cooldown של 30 דק׳ למניעת שטף.
- Recovery alerts — כשהאתר חוזר לתפקד, מקבלים הודעה "האתר חזר" עם משך הזמן שהיה down.
- Uptime analytics — חישוב uptime% של 24 שעות אחרונות + ממוצע latency, SQL aggregations מהירים.
איך מגדירים את זה לעבוד
- צור bot ב-Telegram דרך @BotFather — קבל bot token (
1234567:ABC-DEF...). - קבל chat ID ע"י שליחת
/startלבוט, ואזhttps://api.telegram.org/bot<TOKEN>/getUpdates. - הזן בטופס הגדרות ב-
/cronping/→ לשונית "הגדרות". - שמור + לחץ "שלח הודעת בדיקה" — אם ההודעה הגיעה, סיימת.
- הוסף URL לבדיקה דרך הכפתור הראשי — המערכת תתחיל לסקור אוטומטית.
טכנולוגיות
Backend:
- FastAPI router
/api/cronping/*ב-zbang-api Docker container - SQLAlchemy 2.0 models, PostgreSQL 16
asyncio.create_taskscheduler loop רץ כל 15 שניותhttpx.AsyncClientל-probes אסינכרוניים- Telegram Bot API ישיר עם Markdown formatting
Frontend:
- HTML/CSS/JS vanilla, ללא frameworks ו-builds
- Auto-refresh כל 15 שניות עם fetch למ-API
- פלטה teal-deep + emerald + cyan על רקע infrastructure-themed
- תמונות hero + section מיוצרות ב-codex gpt-image-2
- Modal טיפוסי עם handle, validation, ו-empty state
אבטחה / הגבלות (v1)
- Single-tenant — singleton settings row
- מקסימום 25 מוניטורים
- אינטרוול מינימלי 60 שניות
- bot token לא מוצג ב-GET (מסונן)
- API rate limit דרך slowapi