יצירת מדיניות התראות

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

יוצרים כללי מדיניות התראות באמצעות ה-method‏ alertPolicies.create. השימוש הכללי בשיטה הזו מתואר במאמר ניהול מדיניות התראות.

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

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

למדיניות התראות צריך להיות לפחות תנאי אחד. כדי להגדיר תנאי שמבוסס על SLO, צריך להשתמש בתנאי מסוג MetricThreshold.

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

תנאי של SLO מגדיר את השדות comparison, thresholdValue, duration ו-trigger.

בדוגמה הזו נוצר תנאי שמופר כשקצב שריפת המזומנים גבוה פי 2 מהקצב הרגיל. המבנה נראה כך:

  "conditions": [
    {
      "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
      "conditionThreshold": {
        "filter": DATA_RETRIEVAL_FILTER_FOR_SLO,
        "comparison":"COMPARISON_GT",
        "thresholdValue": 2,
        "duration": {
          "seconds":"0",
        },
      },
    }
  ],

כדי להגדיר את השדה filter, צריך את שם המשאב של יעד ספציפי של רמת שירות. הערך הזה הוא מהצורה projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}. מידע על איתור מזהה ה-SLO מופיע במאמר הצגת רשימת יעדי ה-SLO.

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

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

"filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")"

שאר סעיפי מדיניות ההתראות

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

  • displayName: תיאור של מדיניות ההתראות.
  • combiner: תיאור הלוגיקה לשילוב תנאים. למדיניות הזו יש רק תנאי אחד, כך שאפשר להשתמש ב-AND או ב-OR.
  • notificationChannels: מערך של ערוצי התראות קיימים לשימוש כשהתנאים להפעלת מדיניות ההתראות מתקיימים. מידע על איתור ויצירה של ערוצי התראות זמין במאמר ערוצי התראות.
  • documentation: מידע שנשלח כשלא מתקיימים התנאים, כדי לעזור לנמענים לאבחן את הבעיה. פרטים נוספים זמינים במאמר Documentation.

יצירת מדיניות התראות

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

פרוטוקול

כדי ליצור מדיניות התראות באמצעות curl, שולחים הודעת POST לנקודת הקצה https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies ומספקים את מדיניות ההתראות בגוף הבקשה. קובץ ה-JSON בגוף הבקשה מתאר מדיניות התראות שמשתמשת בתנאי סף שמבוסס על בורר סדרות הזמן select_slo_burn_rate עם תקופת מבט לאחור של שעה אחת.

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

    CREATE_ALERT_POST_BODY=$(cat <<EOF
    {
      "displayName":"SLO burn-rate alert for ${SLO_ID} with a threshold of 2",
      "combiner":"AND",
      "conditions": [
        {
          "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
          "conditionThreshold": {
            "filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")",
            "comparison":"COMPARISON_GT",
            "thresholdValue": 2,
            "duration": {
              "seconds":"0",
            },
          },
        }
      ],
      "notificationChannels": ["${NOTIFICATION_CHANNEL}", ],
      "documentation": {
         "content": "SLO burn for the past 60m exceeded twice the acceptable budget burn rate.",
         "mime_type": "text/markdown",
      },
    }
    EOF
    )
    
  2. שליחת הבקשה לנקודת הקצה:

    curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" --header "Content-Type: application/json" -X POST -d "${CREATE_ALERT_POST_BODY}" https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies