ניתוב התראות היברידי: Slack, Telegram, PagerDuty, OpsGenie

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

היכולות שלנו:

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הגדרת התראות Slack: היכן ניתוב נשבר

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

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

בעיה נפרדת — אסקלציה. אם אף אחד לא אישר את ההודעה, לא קורה כלום: אין כלל «כעבור 10 דקות מתקשרים לתורן השני». אירוע שהוחמץ צף בבוקר מתלונות משתמשים, ולא מהתראה, והאבחון מתחיל מאפס.

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

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

מה משתנה לאחר אפיק התראות ותורנויות אחיד

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

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

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

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

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

השוואת דרכי ניתוב התראות

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

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

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

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

כיצד אנו מיישמים ניתוב: שלבי העבודה

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

סדר העבודה

  1. ביקורת של מקורות אירועים. עורכים ספירת מלאי של מערכות ששולחות התראות: פורמטים, אינטגרציות קיימות, כפילויות וערוצים ללא בעלים.
  2. סיווג הזרימה. מסמנים אירועים לפי קריטיות ובעלים של השירות: מה הולך לצ'אט העבודה, מה מעיר את התורן, מה נכתב רק ליומן.
  3. סכמת ניתוב. כללים לפי תוויות מקור: קיבוץ אירועים דומים, דיכוי חזרות, חלונות שקט, סדר אסקלציה לפי רמות.
  4. הגדרת ערוצים. מחברים צ'אטים ושירותי תורנויות, קובעים תבנית התראה אחידה עם קישורים לגרפים וליומנים.
  5. בדיקת מסירה. הפעלות בדיקה לפי כל כלל, מדידת זמן מהאירוע ועד להתראה ועד לאישור, בדיקת אסקלציה בעת כשל בערוץ.
  6. תקנון. מתעדים מי עורך את הכללים, כיצד מחובר שירות חדש, כיצד מוסרת התראת שווא.
  7. מסירה לתפעול. מוסרים תיעוד וסכמה, מאמנים תורנים, מנתחים את השבועות הראשונים ומתקנים ספים.

מה נשאר במתאר שלכם: תצורות ותקנונים

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

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

מקרה בוחן: כיצד צמצמנו את רעש ההתראות וזמן התגובה

לפני: זרם אחד לכל האירועים

כל הפעלות הניטור הלכו לצ'אט המשותף של משמרת התורנים, ומעל — שיחות והתראות נייד על כל כשל, אפילו קצר. במשמרת לילה התורן קיבל כ-380 הודעות, שלוש רביעיות מהן — חזרות על אותה ירידה בביצועים מצמתים שונים. הקריטי טבע בזרם הזה, והבחינו בו רק בתזכורת הבאה.

אחרי: ניתוב לפי קריטיות

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

הקריטי והדורש אדם מיידית עובר דרך PagerDuty עם שיחה, ירידות בביצועים עם תרחיש מובן — לערוץ התורנים ב-Telegram, אירועי שירות לניתוח ביום — ל-Slack.

הזרימה לתורן ירדה מ-380 הודעות ל-40–60 למשמרת, שיעור המטופלים כשווא — מ-78% ל-12%. הזמן החציוני מההפעלה ועד לנטילה לטיפול הצטמצם מ-25–40 דקות ל-3–5.

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

במה שונה תורנות במסנג'ר ממערכת אסקלציה

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

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

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

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

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

ספקות טכניים נפוצים לפני יישום

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

האם ניטור שכבר מוגדר אצלנו — יצטרך להיבנות מחדש?

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

איך לא לקבל את אותה התראה בשלושה ערוצים?

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

איך להפריד בין זרמי לילה לזרמי יום?

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

מקורות מספקים אירועים בפורמט שונה — זו בעיה?

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

אפשר ליישם בשלבים, בלי להעביר הכל בבת אחת?

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

בואו נדון בסכמת ההתראות והתורנויות שלכם

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

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

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

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