מודול

מאות אלפי שגיאות שרת, ומה מתוכן באמת בוער

איסוף בלי סוכן, קיבוץ לפי חתימה, ודירוג שאומר מה קודם.

שרת ייצור חי מייצר שגיאות כל הזמן. רובן חוזרות על עצמן, חלקן בכלל לא שלכם, וכולן נראות אותו דבר ברשימה. השאלה אינה "כמה שגיאות היו" אלא "מה לתקן היום".

נאסף בלי לגעת בקוד של הלקוח

השגיאות נמשכות מהפיד של המערכת עצמה כל חמש דקות, עם סמן שממנו ממשיכים. מערכות מעקב שגיאות מחוברות (Sentry, Rollbar, Bugsnag, Application Insights) נבדקות פעם בשעה. אין סוכן להתקין ואין ספרייה להוסיף לקוד: מה שהמערכת כבר מדווחת, נאסף.

סדר גודל מפרויקט חי אחד, כדוגמה ולא כהבטחה: 348,628 אירועים נאספו בחודשיים.

חתימה אחת, קבוצה אחת

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

סדר גודל: 348,628 אירועים הצטמצמו ל-902 קבוצות. הקבוצה הגדולה בהן ספרה 1,425,190 הופעות - מספר שלבדו היה מטביע כל רשימה.

לא כל שגיאה היא באג שלכם

כל קבוצה מסווגת בשלושה סוגים: שגיאה אמיתית, שירות חיצוני (SMS, דואר) ורעש - בוטים, סורקים, בדיקות 404. הסיווג הוא כללים מפורשים, לא ניחוש, וברירת המחדל היא "אמיתית": לא מסתירים את מה שלא זיהינו.

סדר גודל: 881 אמיתיות, 19 רעש, 2 חיצוניות.

דירוג שאומר מה קודם

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

הגורם "מגמת גידול" לא נכנס בכוונה: להיסטוריה הקיימת אין מספיק עומק, ומדד שאי אפשר לחשב באמת היה נראה כמו מדידה.

סדר גודל נכון ל-24.10.2026: 1,136 נמוכות, 11 בינוניות, 8 גבוהות, 1 קריטית. בדיוק כך זה אמור להיראות - מה שבוער הוא בודדות, לא מאות.

מכתב על חדשה, ומכתב נפרד על חוזרת

על קבוצה חדשה נשלח מכתב פעם אחת. אם קבוצה שנסגרה חוזרת - נשלח מכתב אחר, שאומר את זה במילים ולא בסימן: "הופיעה" ו"חזרה" דורשות דברים שונים, ואותה כותרת הייתה מלמדת לא לקרוא אף אחת מהן.

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

מאיפה בקוד זה בא

מהמחסנית נשלף שם המחלקה שבה נפלה השגיאה. זה לא עובד תמיד: מחסנית לא תמיד מגיעה, ולפעמים אין בה פריים משלנו.

סדר גודל, ובכוונה לא מעוגל יפה: 399 קבוצות מתוך 902 עם מחלקה מזוהה.

אזורים, כדי לשאול "מה נשבר אצלנו בתשלומים"

לקבוצות אפשר לתת תווית אזור - תשלומים, הרשמה, ממשק ניהול - ואז השאלה מפסיקה להיות "איזו שגיאה הכי תכופה" ונעשית "מה לא בסדר בחלק הזה של המערכת". כרגע מוגדרות 8 תוויות כאלה.

הריצה הראשונה לא מציפה בכל מה שהיה

כשמחברים פיד שכבר עובד שנים, כל מה שקיים בו הוא "חדש" מבחינתנו - ובלי כלל מיוחד הריצה הראשונה הייתה שולחת מאות מכתבים בבת אחת, ואת כולם היו מוחקים בלי לקרוא.

לכן קבוצות שקיימות מלפני החיבור מסומנות כמוכרות בשקט, וחלון צר נשמר לטובת מה שבאמת הופיע עכשיו. על הפרויקט החי כך נמנעו 849 מכתבים מיותרים, ונכתב על האחת שבאמת נולדה באותה שעה.

מכאן נפתחת משימה

מקבוצה אפשר לפתוח משימה בלחיצה, והמשימה זוכרת מאיזו שגיאה היא נולדה. יש גם שדה פתרון ומנגנון שמחפש קבוצות דומות שכבר נפתרו.

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

מה הלקוח רואה

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

שאלות נפוצות

מאילו מקורות נאספות השגיאות?
מ-Sentry, Rollbar, Bugsnag ו-Application Insights, מריצות שנכשלו ב-GitHub Actions וב-GitLab CI, וגם מפיד השגיאות של המערכת עצמה, בלי להתקין סוכן ובלי להוסיף ספרייה לקוד. האיסוף ממשיך מהנקודה שבה נעצר. כל המקורות נכנסים לאותו זרם, ושם השגיאות נקבצות לפי חתימה, מסווגות ומדורגות לפי חומרה.
חיבור ראשון של מערכת ותיקה יציף אותנו במכתבים?
לא. קבוצות שקיימות מלפני החיבור מסומנות בשקט כמוכרות, ונשאר חלון צר רק למה שהופיע באמת באותו זמן. אחרי זה נשלח מכתב אחד על כל קבוצה חדשה, ומכתב אחר, שאומר זאת במפורש, כשקבוצה שנסגרה חוזרת. טקסט השגיאה עובר מיסוך מזהים גם במכתב וגם במסך.
לפי מה נקבעת החומרה של קבוצת שגיאות?
לפי שלושה גורמים: כמה פעמים הקבוצה הופיעה בשבעת הימים האחרונים, הסוג שלה וחזרה אחרי סגירה. מאה הופעות ומעלה הן קריטיות, מחמש עשרה גבוהות, מחמש בינוניות. רעש, כמו בוטים וסורקים, נשאר נמוך תמיד. שגיאה של שירות חיצוני, כמו SMS או דואר, לא עולה מעל בינונית. קבוצה שחזרה עולה דרגה כל עוד היא ממשיכה להופיע, וקבוצה שהשתתקה יורדת מעצמה, כי החישוב רץ מחדש כל לילה. הסיווג נעשה לפי כללים מפורשים, וכשאין זיהוי ברירת המחדל היא "אמיתית".
הלקוח רואה את רשימת השגיאות?
לא. מסכי השגיאות שייכים לספק בלבד. אל הלקוח מגיע מה שהפך לעבודה: משימה שנפתחה מקבוצת שגיאות וזוכרת מאיזו קבוצה נולדה, והשעות שנרשמו עליה בדוח החודשי. כך הלקוח רואה מה מטופל ובכמה זמן, בלי לקבל רשימה גולמית של אלפי אירועים, שחלקם רעש וחלקם בכלל לא קשורים אליו.

רוצים לראות את זה על הנתונים שלכם? אפשר להתחיל בתקופת ניסיון, בלי כרטיס אשראי.

התחילו ניסיון חינם