הצוות שלכם טובע בים של התראות: יותר מ-200 התראות בשעה, חצי מהן כפילויות, והשאר אזהרות שאינן דורשות פעולה. מהנדסי תורנות נשחקים, אירועים אמיתיים הולכים לאיבוד, וה-MTTR גדל. אנו מגדירים את PagerDuty כך שהבעיה נפתרת תוך 2–4 ימים. ניהול אירועים מפסיק להיות כאב ראש.
אחד הפרויקטים שלנו: Prometheus יצר יותר מ-200 התראות בשעה. לאחר הגדרת PagerDuty עם Event Intelligence, מספר האירועים ירד ל-5–7 ביום. ה-MTTR ירד מ-45 ל-8 דקות — פי 5 מהר יותר. העלות הממוצעת של דקת השבתה למסחר אלקטרוני גבוהה, כך שהחיסכון היה משמעותי. במשך יותר מ-5 שנים, השלמנו יותר מ-50 אינטגרציות כאלה עבור צוותים בגדלים שונים. אנו מבטיחים פעילות מערכת יציבה לאחר הפריסה.
ארכיטקטורת PagerDuty: רכיבים מרכזיים
שירותים — יחידות לוגיות (backend API, שירות תשלומים, מסד נתונים). לכל שירות יש מדיניות אסקלציה ולוח זמני תורנות משלו.
אינטגרציות — מקורות אירועים: Prometheus/Alertmanager, Datadog, CloudWatch, Grafana, Uptime Robot, webhooks מותאמים אישית. כל אינטגרציה יוצרת מפתח endpoint ייחודי.
מדיניות אסקלציה — כללים: מי מקבל את ההתראה, אחרי כמה דקות מתבצעת אסקלציה, ולאן להסלים.
לוחות זמנים — לוחות תורנות עם רוטציות.
איך מחברים את Prometheus Alertmanager? (מקרה מבחן מפורט מהניסיון שלנו)
זהו התרחיש הנפוץ ביותר. אנו פועלים שלב אחר שלב:
- צרו שירות ב-PagerDuty והוסיפו אינטגרציה של Prometheus. קבלו את ה-routing_key.
- בקונפיגורציה של Alertmanager, הגדירו receiver עם המפתח הזה. הקפידו לציין description ו-severity.
- הגדירו קיבוץ לפי alertname ו-cluster כך שהתראות קשורות לא ייצרו אירועים מרובים.
- ודאו שהתראת בדיקה מגיעה לשירות הנכון ומסלימה לפי המדיניות.
דוגמה לקונפיגורציית receiver:
---
# alertmanager.yml
route:
group_by: ['alertname', 'cluster']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: 'pagerduty-critical'
routes:
- match:
severity: critical
receiver: 'pagerduty-critical'
- match:
severity: warning
receiver: 'slack-warnings'
receivers:
- name: 'pagerduty-critical'
pagerduty_configs:
- routing_key: '<PAGERDUTY_INTEGRATION_KEY>'
description: '{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}'
severity: '{{ .CommonLabels.severity }}'
details:
firing: '{{ template "pagerduty.default.instances" .Alerts.Firing }}'
---
בפרויקט אחד, הגדרנו קיבוץ לפי cluster ו-alertname. זה הפחית את מספר האירועים שנוצרו ב-70%.
השוואת שיטות אינטגרציה
| מקור | סוג אינטגרציה | מורכבות | הערות |
|---|---|---|---|
| Prometheus Alertmanager | Webhook (HTTP) | נמוכה | תומך בקיבוץ ותבניות |
| Datadog | API מקורי | בינונית | דורש הפעלה ב-Datadog, נוח דרך tags |
| CloudWatch | SNS → Lambda → Webhook | גבוהה | אין אינטגרציה ישירה, דורש middleware |
| Grafana | Webhook | נמוכה | תומך ב-payload מותאם אישית |
| Webhook מותאם אישית | HTTP | נמוכה | גמישות מקסימלית |
איך PagerDuty עוזר לאלף את רעש ההתראות?
PagerDuty Event Intelligence (זמין בתוכניות בתשלום) מדכא רעש אוטומטית. הוא כולל שלושה מנגנונים:
- קיבוץ התראות: התראות קשורות מתמזגות לאירוע אחד. כשמסד נתונים נופל, לא תקבלו 50 התראות מכל השירותים — רק אחת.
- קיבוץ התראות חכם: מודל ML המבוסס על דפוסים היסטוריים מקבץ התראות דומות.
- כללי דיכוי: דיכוי זמני של התראות במהלך תחזוקה מתוכננת.
לפי תיעוד PagerDuty, הפחתת רעש מקצצת את ההתראות בעד 90%. בפרויקט אחד, השגנו הפחתה של 85%.
יתרונות PagerDuty על פני התראות דוא"ל
דוא"ל אינו יכול לקבץ התראות, אין בו אסקלציות, ואינו מספק סטטיסטיקות MTTR. PagerDuty מעביר התראות קריטיות פי 5 מהר יותר: התראות push מגיעות תוך שניות, בעוד שדוא"ל עלול להתעכב בדקות. יתרה מזאת, PagerDuty שומר אוטומטית ציר זמן לאירוע, מה שמסייע בניתוחים לאחר אירוע.
טבלה: מדדים מרכזיים לפני ואחרי פריסת PagerDuty
| מדד | לפני | אחרי |
|---|---|---|
| מספר התראות ביום | 500+ | 10–15 |
| MTTR | 45 דקות | 8 דקות |
| שיעור חיובי כוזב | 80% | 5% |
| חיסכון שנתי | — | עד 2 מיליון רובל |
| שביעות רצון הצוות | נמוכה | גבוהה |
אוטומציה עם Webhooks ו-Runbooks
PagerDuty Webhooks שולחים אירועים כאשר אירוע נוצר, עודכן או נפתר. דוגמה ל-handler ב-Python:
@app.route('/pd-webhook', methods=['POST'])
def pagerduty_webhook():
data = request.json
event_type = data['event']['event_type']
incident = data['event']['data']
if event_type == 'incident.triggered':
create_incident_channel(incident['title'], incident['id'])
update_status_page('major_outage', incident['title'])
elif event_type == 'incident.resolved':
archive_incident_channel(incident['id'])
update_status_page('operational', '')
return '', 200Runbook Automation (לשעבר Rundeck) מאפשר פעולות אוטומטיות על התראה: הפעלה מחדש של שירות, ניקוי דיסק, סקייל. אם סקריפט פותר את הבעיה, האירוע נסגר אוטומטית מבלי להעיר את מהנדס התורנות.
פרטים נוספים על אינטגרציית Datadog
ל-Datadog יש אינטגרציה ישירה עם PagerDuty דרך API. ההתקנה אורכת כשעה: הוסיפו את PagerDuty כאינטגרציה ב-Datadog, צרפו למוניטורים הרצויים, והגדירו tags. לאחר מכן, התראות מ-Datadog ייצרו אוטומטית אירועים ב-PagerDuty.מה כוללת העבודה שלנו?
- ביקורת של תהליכי הניטור וניהול האירועים הנוכחיים.
- עיצוב מבנה השירותים, מדיניות אסקלציה ולוחות זמנים.
- הגדרת אינטגרציות עם Prometheus, Datadog, CloudWatch, Grafana ואחרים.
- הגדרת webhooks ואוטומציה עם Jira/Slack.
- בדיקות והדרכת צוות.
- העברת תיעוד והרשאות גישה.
- אחריות לפעילות יציבה ותמיכה לאחר פריסה.
- למהנדסים שלנו יש הסמכות PagerDuty וניסיון עם יותר מ-50 אינטגרציות.
קבלו ייעוץ לאופטימיזציה של ניהול האירועים שלכם. צרו קשר לביקורת של המערכת שלכם — נעריך את התשתית שלכם ונציע קונפיגורציה אופטימלית תוך 1–2 ימים. הזמינו אינטגרציית PagerDuty turnkey וקבלו הפחתת MTTR של פי 3–5.







