Sentry ====== הפעלה (משתני סביבה) -------------------- - ``SENTRY_DSN= https://xxx@o1234.ingest.sentry.io/5678`` - ``SENTRY_TRACES_SAMPLE_RATE=0.1`` (אופציונלי) - ``SENTRY_PROFILES_SAMPLE_RATE=0.1`` (אופציונלי) התראות ל־Telegram וללוח Observability ------------------------------------- ברירת מחדל: Sentry מציג Issues בממשק ושולח מיילים, אבל **לא** מזרים את זה אוטומטית למערכת ההתראות הפנימית שלנו (Telegram + Observability). כדי לקבל התראות Sentry גם אצלנו יש שתי אפשרויות: - Polling (מומלץ): הבוט מושך Issues אחרונים מ-API של Sentry וממיר אותם ל-``internal_alerts`` עם ``alert_type=sentry_issue``. - Webhook (אופציונלי): שירות ה-Web שמריץ את ``services/webserver.py`` מקבל ``POST`` ל-``/webhooks/sentry`` וממיר את ה-payload ל-``internal_alerts``. איפה להגדיר משתנים ~~~~~~~~~~~~~~~~~~ - Polling: **בבוט** (תהליך ``main.py``). - Webhook: **בשירות ה-Web** שמאזין ל-``/webhooks/sentry``. מה צריך כדי שזה יופיע בלוח Observability ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``ALERTS_DB_ENABLED=true`` (וגם חיבור MongoDB תקין: ``MONGODB_URL`` + ``DATABASE_NAME``) - ברגע שמגיע ``internal_alert`` מסוג ``sentry_issue`` הוא יישמר ב-``alerts_log`` ויופיע בלוח. מה צריך כדי שזה יישלח לטלגרם ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``ALERT_TELEGRAM_BOT_TOKEN`` + ``ALERT_TELEGRAM_CHAT_ID`` - ודאו ש-``ALERT_TELEGRAM_MIN_SEVERITY`` לא גבוה מדי (לרוב ``warning``/``error``). Polling – משתנים רלוונטיים ~~~~~~~~~~~~~~~~~~~~~~~~~~ הפעלה בסיסית: - ``SENTRY_AUTH_TOKEN`` + ``SENTRY_ORG`` (ואופציונלי ``SENTRY_PROJECT`` לסינון) - ``SENTRY_POLL_ENABLED=true`` שליטה על התזמון/רעש: - ``SENTRY_POLL_INTERVAL_SECS``: כל כמה שניות לעשות Poll - ``SENTRY_POLL_FIRST_SECS``: דיליי לפני הריצה הראשונה אחרי עלייה - ``SENTRY_POLL_DEDUP_SECONDS``: חלון דה-דופליקציה לכל Issue - ``SENTRY_POLL_SEED_SILENT=true``: מומלץ כדי לא “להציף” על Issues קיימים בעת עלייה Webhook – אבטחה ודה-דופליקציה ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ אם מגדירים ``SENTRY_WEBHOOK_SECRET`` השירות יאמת את הבקשה באחת מהדרכים: - ``Authorization: Bearer `` - או פרמטר ``?token=`` - או חתימת HMAC (כותרות כמו ``X-Sentry-Hook-Signature``/``X-Sentry-Hook-Timestamp`` כאשר קיימות) כדי לצמצם הצפה יש ``SENTRY_WEBHOOK_DEDUP_WINDOW_SECONDS`` (ברירת מחדל 300). עקרונות -------- - Redaction מופעל אוטומטית. - חברו ``error_code`` לקיבוץ חכם של שגיאות.