ניטור בוט מסחר: בדיקת תקינות, התראות ו-Watchdog בסביבת ייצור

בוט מסחר שקורס ב-3 לפנות בוקר הוא לא רק עניין של עסקאות שהוחמצו. זה עניין של פוזיציות פתוחות ללא ניהול, סטופ-לוסים שהוחמצו, והפסדים של עשרות אחוזים מההון. דמיין: הבוט שלך מרוויח 2% ביום, ופתאום השרת נופל לשעתיים. הפסד - 4% מההפקדה. עבור חשבון של 100 אלף דולר

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    פיתוח אפליקציית ווב עבור FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    פיתוח אתר עבור BELFINGROUP
    1004
  • image_ecommerce_furnoro_435_0.webp
    פיתוח חנות מקוונת לחברת FURNORO
    1270
  • image_logo-advance_0.webp
    עיצוב לוגו לחברת B2B Advance
    719
  • image_crm_enviok_479_0.webp
    פיתוח אפליקציית ווב עבור Enviok
    1011

בוט מסחר שקורס ב-3 לפנות בוקר הוא לא רק עניין של עסקאות שהוחמצו. זה על פוזיציות פתוחות ללא ניהול, סטופ-לוסים שהוחמצו, והפסדים של עשרות אחוזים מההון. דמיינו: הבוט שלכם מרוויח 2% ביום, ופתאום השרת נופל לשעתיים. הפסד—4% מההפקדה. עבור חשבון של 100 אלף דולר, זה 4,000 דולר שהיו יכולים להיחסך עם healthcheck פשוט. כל שעת השבתה יכולה לעלות ביוקר—הגדרת ניטור משתלמת בעסקה אחת מפסידה שמנעתם. ניטור זמינות אינו על לוחות מחוונים יפים של Grafana; זו מערכת שמעירה אתכם לפני שהשוק עושה זאת בצורה כואבת יותר. אנו מגדירים ניטור תוך 1–2 ימים, והוא פועל שנים ללא תקלות. עם למעלה מ-50 פרויקטי אוטומציה של ניטור תחת חגורתנו, יש לנו את הניסיון לצפות טעויות טיפוסיות.

מה לנטר

זמינות הבוט אינה רק "התהליך רץ." התהליך יכול להיות חי בעוד הבוט אינו סוחר. שלוש רמות של בדיקות:

  • תהליך חי — התהליך רץ, לא תקוע.
  • יישום חי — הבוט מעבד נתונים וכותב באופן קבוע חותמת זמן של הפעילות האחרונה. אם חותמת הזמן לא עודכנה במשך N דקות—משהו לא בסדר.
  • מסחר חי — הבוט לא רק עובד אלא באמת סוחר: מספר הזמנות בפרק זמן, רווח והפסד, פוזיציות פתוחות תואמות לאסטרטגיה.

איך להגדיר נקודת Healthcheck?

הגישה הפשוטה והאמינה ביותר היא להוסיף נקודת HTTP ישירות לבוט. אנו משתמשים ב-FastAPI:

from fastapi import FastAPI import asyncio import time app = FastAPI() last_heartbeat = time.time() bot_state = {"status": "running", "last_trade": None, "open_positions": 0} @app.get("/health") async def health(): age = time.time() - last_heartbeat if age > 60: # не обновлялся больше минуты return {"status": "stale", "heartbeat_age_seconds": age}, 503 return {"status": "ok", **bot_state} # В основном цикле бота async def bot_loop(): global last_heartbeat while True: last_heartbeat = time.time() await run_strategy() await asyncio.sleep(5) 

הנקודה מחזירה סטטוס 200 כשהיא בריאה ו-503 כשהדופק באיחור. ניטור חיצוני קולט את ה-503 ושולח התראה.

השוואת כלי ניטור חיצוניים

Uptime Kuma נפרס פי 300 מהר יותר מ-Prometheus ודורש פי 10 פחות משאבי שרת. עבור בוט יחיד, זו הבחירה האופטימלית.

כלי סוג ניטור זמן פריסה התראות אמינות
Uptime Kuma באירוח עצמי (Docker) 5 דקות Telegram, Discord, דוא"ל גבוהה (באירוח עצמי)
Better Uptime SaaS 10 דקות Slack, PagerDuty, SMS גבוהה (SLA 99.9%)
Prometheus + Grafana באירוח עצמי 2–3 שעות Alertmanager, Telegram גבוהה מאוד, אך מורכב יותר

Uptime Kuma הוא חלופה באירוח עצמי ל-UptimeRobot. הוא בודק את נקודת ה-HTTP כל N שניות ושולח הודעות כשהיא לא זמינה. פריסה תוך 5 דקות עם Docker:

docker run -d --restart=always -p 3001:3001 \ -v uptime-kuma:/app/data louislam/uptime-kuma:1 

עבור הבוט: סוג ניטור = HTTP, כתובת URL = from fastapi import FastAPI import asyncio import time app = FastAPI() last_heartbeat = time.time() bot_state = {"status": "running", "last_trade": None, "open_positions": 0} @app.get("/health") async def health(): age = time.time() - last_heartbeat if age > 60: # не обновлялся больше минуты return {"status": "stale", "heartbeat_age_seconds": age}, 503 return {"status": "ok", **bot_state} # В основном цикле бота async def bot_loop(): global last_heartbeat while True: last_heartbeat = time.time() await run_strategy() await asyncio.sleep(5) , מרווח = 30 שניות, סטטוס צפוי = 200.

Better Uptime / PagerDuty — אם אתם צריכים ערבויות SLA ומדיניות הסלמה. אנו נבחר באפשרות שמתאימה לתקציב שלכם.

למה אתם צריכים Watchdog

אם הבוט עצמו לא יכול לשלוח התראה (תהליך מת), אתם צריכים watchdog חיצוני. הגרסה הפשוטה ביותר היא סקריפט bash עם cron:

#!/bin/bash # /usr/local/bin/bot-watchdog.sh HEALTH_URL="http://localhost:8080/health" TELEGRAM_TOKEN="..." CHAT_ID="..." response=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$HEALTH_URL") if [ "$response" != "200" ]; then curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \ -d "chat_id=${CHAT_ID}" \ -d "text=ALERT: Trading bot health check failed (HTTP ${response})" fi 

איך לקבוע את מרווח הדופק האופטימלי?

המרווח תלוי בתנודתיות השוק ובזמן התגובה. למסחר בתדירות גבוהה—10–30 שניות, לאסטרטגיות רגילות—30–60 שניות. הכלל המרכזי: המרווח צריך להיות קצר מהזמן שבו עסקה שהוחמצה הופכת קריטית. כמו כן, יש להתחשב בהשהיית רשת ובזמן עיבוד ה-healthcheck.

טעויות נפוצות והפתרונות שלהן

טעות נפוצה אחת היא נקודת healthcheck כבדה מדי שגורמת לפסקי זמן ולהתראות שווא. פתרון: הפכו את הנקודה לקלה ככל האפשר, רק בדיקת דופק ללא לוגיקה עמוקה. טעות נוספת היא בדיקות תכופות מדי (כל 5 שניות), שיוצרות עומס ורעש. מרווח אופטימלי הוא 30–60 שניות. שלישית היא היעדר הגנה מפני לולאת קריסה, שבה הבוט מופעל מחדש ללא סוף. השתמשו ב-docker run -d --restart=always -p 3001:3001 \ -v uptime-kuma:/app/data louislam/uptime-kuma:1 ב-systemd או במדיניות restart של Docker. אם אתם לא רוצים להתמודד עם זה בעצמכם, הזמינו פתרון מוכן—אנו נגדיר ניטור תוך יום אחד.

הגדרת ניטור שלב אחר שלב ביום אחד

  1. הוסיפו נקודת healthcheck לקוד הבוט (דוגמה למעלה).
  2. פרסו את Uptime Kuma על השרת (http://your-bot-host:8080/health).
  3. הגדירו ניטור: כתובת URL = #!/bin/bash # /usr/local/bin/bot-watchdog.sh HEALTH_URL="http://localhost:8080/health" TELEGRAM_TOKEN="..." CHAT_ID="..." response=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$HEALTH_URL") if [ "$response" != "200" ]; then curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \ -d "chat_id=${CHAT_ID}" \ -d "text=ALERT: Trading bot health check failed (HTTP ${response})" fi , מרווח = 30 שניות.
  4. חברו התראת Telegram (BotFather + ה-chat_id שלכם).
  5. התקינו את סקריפט ה-watchdog ב-cron (כל דקה).
  6. הגדירו systemd עם [Unit] Description=Trading Bot After=network.target [Service] ExecStart=/usr/bin/python3 /opt/bot/main.py Restart=on-failure RestartSec=10 StartLimitIntervalSec=60 StartLimitBurst=3 [Install] WantedBy=multi-user.target ו-Restart=on-failure.
  7. בדקו: עצרו את הבוט—תוך 30 שניות אמורה להגיע התראה.

הפעלה מחדש אוטומטית דרך systemd

אם הבוט רץ כשירות systemd, ציינו:

[Unit] Description=Trading Bot After=network.target [Service] ExecStart=/usr/bin/python3 /opt/bot/main.py Restart=on-failure RestartSec=10 StartLimitIntervalSec=60 StartLimitBurst=3 [Install] WantedBy=multi-user.target 

StartLimitBurst=3 — הפעלה מחדש אוטומטית בקריסה. StartLimitBurst=3 — לא יותר מ-3 הפעלות מחדש ב-60 שניות (הגנה מפני לולאת קריסה).

מה כלול בהגדרה?

אנו מציעים הגדרת ניטור מקיפה תוך 1–2 ימי עסקים:

  • הוספת נקודת healthcheck לבוט (או התאמת קיימת)
  • פריסת Uptime Kuma / הגדרת ניטור חיצוני
  • הגדרת התראות Telegram
  • סקריפט watchdog
  • הפעלה מחדש אוטומטית דרך systemd/Docker
  • מדדים בסיסיים של Prometheus, אם יש צורך באנליטיקה על פעילות מסחר

אם אין לכם זמן להגדרה עצמית, השאירו בקשה—אנו נעריך את הפרויקט שלכם ונציע פתרון סוהר. אנו מבצעים אוטומציה של ניטור כבר למעלה מ-5 שנים—עשרות בוטים מוגדרים שרצים ללא תקלות. הזמינו ניטור אמין היום וקבלו ייעוץ לפני תחילת העבודה.