שרת ייצור חי מייצר שגיאות כל הזמן. רובן חוזרות על עצמן, חלקן בכלל לא שלכם, וכולן נראות אותו דבר ברשימה. השאלה אינה "כמה שגיאות היו" אלא "מה לתקן היום".
נאסף בלי לגעת בקוד של הלקוח
השגיאות נמשכות מהפיד של המערכת עצמה כל חמש דקות, עם סמן שממנו ממשיכים. מערכות מעקב שגיאות מחוברות (Sentry, Rollbar, Bugsnag, Application Insights) נבדקות פעם בשעה. אין סוכן להתקין ואין ספרייה להוסיף לקוד: מה שהמערכת כבר מדווחת, נאסף.
חתימה אחת, קבוצה אחת
אותה שגיאה חוזרת אלפי פעמים ואינה אלפי בעיות. לכל אירוע מחושבת חתימה משלושה חלקים - מודול, פונקציה והודעה מנורמלת - ואירועים בעלי אותה חתימה נכנסים לקבוצה אחת עם מונה.
לא כל שגיאה היא באג שלכם
כל קבוצה מסווגת בשלושה סוגים: שגיאה אמיתית, שירות חיצוני (SMS, דואר) ורעש - בוטים, סורקים, בדיקות 404. הסיווג הוא כללים מפורשים, לא ניחוש, וברירת המחדל היא "אמיתית": לא מסתירים את מה שלא זיהינו.
דירוג שאומר מה קודם
לכל קבוצה מחושבת חומרה לפי מספר הפעמים שהופיעה בשבעת הימים האחרונים: מאה ומעלה קריטית, מחמש עשרה גבוהה, מחמש בינונית, ופחות מזה נמוכה. רעש נשאר נמוך תמיד; שירות חיצוני חסום בתקרה של בינוני; קבוצה שחזרה אחרי סגירה עולה דרגה כל עוד היא ממשיכה להופיע. קבוצה שהשתתקה יורדת מעצמה: ההופעות שלה יוצאות מהחלון, והחישוב רץ מחדש כל לילה.
הגורם "מגמת גידול" לא נכנס בכוונה: להיסטוריה הקיימת אין מספיק עומק, ומדד שאי אפשר לחשב באמת היה נראה כמו מדידה.
מכתב על חדשה, ומכתב נפרד על חוזרת
על קבוצה חדשה נשלח מכתב פעם אחת. אם קבוצה שנסגרה חוזרת - נשלח מכתב אחר, שאומר את זה במילים ולא בסימן: "הופיעה" ו"חזרה" דורשות דברים שונים, ואותה כותרת הייתה מלמדת לא לקרוא אף אחת מהן.
טקסט השגיאה במכתב ובמסך עובר מיסוך מזהים. בהודעת שגיאה יושב מה שהמשתמש הקליד - תעודת זהות בפרמטר, טלפון בטופס - ומכתב שיצא כבר אי אפשר להחזיר.
מאיפה בקוד זה בא
מהמחסנית נשלף שם המחלקה שבה נפלה השגיאה. זה לא עובד תמיד: מחסנית לא תמיד מגיעה, ולפעמים אין בה פריים משלנו.
אזורים, כדי לשאול "מה נשבר אצלנו בתשלומים"
לקבוצות אפשר לתת תווית אזור - תשלומים, הרשמה, ממשק ניהול - ואז השאלה מפסיקה להיות "איזו שגיאה הכי תכופה" ונעשית "מה לא בסדר בחלק הזה של המערכת". כרגע מוגדרות 8 תוויות כאלה.
הריצה הראשונה לא מציפה בכל מה שהיה
כשמחברים פיד שכבר עובד שנים, כל מה שקיים בו הוא "חדש" מבחינתנו - ובלי כלל מיוחד הריצה הראשונה הייתה שולחת מאות מכתבים בבת אחת, ואת כולם היו מוחקים בלי לקרוא.
לכן קבוצות שקיימות מלפני החיבור מסומנות כמוכרות בשקט, וחלון צר נשמר לטובת מה שבאמת הופיע עכשיו. על הפרויקט החי כך נמנעו 849 מכתבים מיותרים, ונכתב על האחת שבאמת נולדה באותה שעה.
מכאן נפתחת משימה
מקבוצה אפשר לפתוח משימה בלחיצה, והמשימה זוכרת מאיזו שגיאה היא נולדה. יש גם שדה פתרון ומנגנון שמחפש קבוצות דומות שכבר נפתרו.
ובגלוי: על הפרויקט החי נפתחה משימה אחת כזו, ופתרון רשום לאפס קבוצות מתוך 902. המנגנון קיים, החומר בו עדיין לא.
מה הלקוח רואה
לא את רשימת השגיאות. מסכי השגיאות שייכים לספק. הלקוח רואה אריח של תקינות המערכת: הכל תקין, או כמה אזורים נמצאים עכשיו בשגיאה, ומתי הייתה הבדיקה האחרונה. מתחתיו רשימה קצרה של אירועי החודש: איזה אזור, מתי התחיל ומתי הסתיים. בלי מחסנית קריאות, בלי חומרה ובלי שמות טכניים. כל השאר מגיע אליו כמשימה או כדוח.
שאלות נפוצות
מאילו מקורות נאספות השגיאות?
חיבור ראשון של מערכת ותיקה יציף אותנו במכתבים?
לפי מה נקבעת החומרה של קבוצת שגיאות?
הלקוח רואה את רשימת השגיאות?
רוצים לראות את זה על הנתונים שלכם? אפשר להתחיל בתקופת ניסיון, בלי כרטיס אשראי.
התחילו ניסיון חינם