יצירת כללי התראה

במכשיר Google Distributed Cloud (GDC)‎ מנותק, אתם יכולים ליצור כללי התראה מהמדדים ומהיומנים של הפרויקט כדי לעקוב באופן יזום ולהגיב לאירועים. הכללים האלה מפעילים התראות באופן אוטומטי כשמתקיימים תנאים מסוימים. אפשר להגדיר את הסוגים הבאים של כללי התראות:

  • כללים שמבוססים על מדדים: הפעלת התראות מנתונים מספריים שנאספים באפליקציות ובתשתית, למשל כשניצול המעבד (CPU) חורג מ-80%. אפשר ליצור כללים מבוססי-מדדים באמצעות מסוף GDC או משאב מותאם אישית של MonitoringRule.
  • כללים מבוססי-יומן: מפעילים התראות מאירועים או דפוסים ספציפיים בנתוני היומן, כמו הודעות שגיאה או פעילות חריגה. אפשר ליצור כללים מבוססי-יומנים באמצעות מסוף GDC או משאב מותאם אישית של LoggingRule.

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

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

כדי לספק הקשר נוסף ולנהל את ההתראות ביעילות, אתם יכולים להוסיף תוויות והערות לכללי ההתראות:

  • תוויות: צמדי מפתח/ערך שמסווגים ומזהים התראות. אפשר להשתמש בתוויות כדי להוסיף מידע כמו:

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

    • הודעות שגיאה מפורטות
    • ביטויים רלוונטיים
    • קישורים למדריכי הפעלה או למדריכים לפתרון בעיות

לפני שמתחילים

כדי לנהל כללים מבוססי-מדדים או מבוססי-יומנים, אתם צריכים את ההרשאות הנדרשות.

### בקשת תפקידי IAM ברמת הארגון לכללים מבוססי-מדדים

כדי לבקש את התפקידים הבאים, פנו לאדמין של IAM בארגון:

  • ‫MonitoringRule PA Creator ‏(monitoringrule-pa-creator): יצירת משאבים בהתאמה אישית של MonitoringRule.
  • עורך MonitoringRule PA ‏(monitoringrule-pa-editor): עריכה או מחיקה של משאבים בהתאמה אישית של MonitoringRule.
  • צפייה ב-MonitoringRule PA (monitoringrule-pa-viewer): צפייה במשאבים בהתאמה אישית של MonitoringRule.

    בקשת תפקידי IAM בפרויקט לכללים מבוססי-מדדים

כדי לבקש את התפקידים הבאים, פנו לאדמין של IAM בפרויקט:

  • ‫MonitoringRule Editor ‏(monitoringrule-editor): עריכה או מחיקה של משאבים בהתאמה אישית של MonitoringRule במרחב השמות של הפרויקט.
  • ‫MonitoringRule Viewer‏ (monitoringrule-viewer): צפייה במשאבים בהתאמה אישית של MonitoringRule במרחב השמות של הפרויקט.

בקשת תפקידי IAM ברמת הארגון לכללים מבוססי-יומן

כדי לבקש את התפקידים הבאים, פנו לאדמין של IAM בארגון:

  • יוצר LoggingRule PA ‏(loggingrule-pa-creator): יצירת משאבים בהתאמה אישית מסוג LoggingRule.
  • עריכת LoggingRule PA ‏(loggingrule-pa-editor): עריכה או מחיקה של משאבים בהתאמה אישית של LoggingRule.
  • צפייה ב-LoggingRule PA ‏(loggingrule-pa-viewer): צפייה במשאבים בהתאמה אישית של LoggingRule.

בקשת תפקידי IAM בפרויקט לכללים מבוססי-יומן

כדי לבקש את התפקידים הבאים, פנו לאדמין של IAM בפרויקט:

  • ‫עריכת LoggingRule‏ (loggingrule-editor): עריכה או מחיקה של משאבים בהתאמה אישית של LoggingRule במרחב השמות של הפרויקט.
  • צפייה ב-LoggingRule ‏(loggingrule-viewer): צפייה במשאבים בהתאמה אישית של LoggingRule במרחב השמות של הפרויקט.

הגדרת כללי התראות

כדי להחיל משאבים בהתאמה אישית, אתם יכולים להגדיר כללי התראות במרחב השמות של הפרויקט באמצעות מסוף GDC (מומלץ) או באמצעות ממשקי ה-API למעקב ולרישום ביומן.

בוחרים אחת מהשיטות הבאות כדי להגדיר כללי התראות על סמך מדדים או יומנים:

המסוף

יצירת כללי התראות בקבוצות של כללים במסוף GDC:

  1. בוחרים פרויקט במסוף GDC.
  2. בתפריט הניווט, לוחצים על Operations > Alerting.
  3. לוחצים על הכרטיסייה מדיניות התראות.
  4. לוחצים על יצירת קבוצת כללים.
  5. בוחרים את סוג כלל ההתראה:

    • בוחרים באפשרות Metrics לכללי התראות שמבוססים על מדדים.
    • בוחרים באפשרות Logs לכללי התראות שמבוססים על יומנים.
  6. מגדירים את קבוצת כללי ההתראות:

    • בשדה Alert rule group name, מזינים שם לקבוצת כללי ההתראה.
    • בשדה Rule evaluation interval, מזינים את מספר השניות לכל מרווח זמן.
    • בשדה Limit, מזינים את המספר המקסימלי של התראות.

  7. בקטע כללי התראה, לוחצים על הוספת כלל.

  8. בחלון Create alert rule, מזינים את הפרטים הבאים:

    • שם לכלל ההתראה.
    • ביטוי לכלל ההתראה (משתמשים ב-LogQL לכללים מבוססי-יומנים וב-PromQL לכללים מבוססי-מדדים).

    • משך הזמן בשניות לפני שההתראה עוברת מסטטוס בהמתנה לסטטוס פתוחה.

    • רמת החומרה, כמו שגיאה או אזהרה.

    • שם קצר לזיהוי המשאב הקשור.

    • קוד התראה לזיהוי ההתראה.

    • כתובת URL של מדריך הפעלה או מידע על פתרון בעיות.

    • הודעת התראה או תיאור.

    • אופציונלי: מוסיפים תוויות והערות כצמדי מפתח/ערך.

  9. לוחצים על שמירה כדי ליצור את הכלל.

  10. לוחצים על יצירה כדי ליצור את קבוצת הכללים.

קבוצת הכללים מופיעה ברשימה קבוצת כללי התראות. אתם יכולים לקבץ עוד כללי התראות בקבוצת הכללים הזו.

API

יצירת כללי התראות מממשקי ה-API של המעקב או הרישום ביומן:

  1. מגדירים משאב בהתאמה אישית מסוג MonitoringRule (כללים שמבוססים על מדדים) או LoggingRule (כללים שמבוססים על יומנים) בקובץ YAML.

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

  2. מחליפים את הערכים הבאים בקובץ ה-YAML בהתאם לצרכים שלכם:

    שדה תיאור
    namespace מרחב השמות של הפרויקט.
    name השם של הגדרת כלל ההתראה.
    source מקור היומן של כלל ההתראה. האפשרויות התקינות הן operational ו-audit. רלוונטי רק למשאבים מסוג LoggingRule.
    interval משך הזמן של מרווח הערכת הכלל בשניות.
    limit אופציונלי. המספר המקסימלי של התראות. כדי לקבל מספר בלתי מוגבל של התראות, צריך להגדיר את הערך 0.
    alertRules ההגדרות ליצירת כללי התראות.
    alertRules.alert שם ההתראה.
    alertRules.expr ביטוי LogQL לכללים שמבוססים על יומנים או ביטוי PromQL לכללים שמבוססים על מדדים. הביטוי צריך להחזיר ערך True או False כדי לקבוע אם ההתראה עוברת למצב המתנה.
    alertRules.for אופציונלי. משך הזמן בשניות לפני שההתראה עוברת ממצב בהמתנה למצב פתוחה. ברירת המחדל היא 0 שניות (הפעלה מיידית).
    alertRules.labels צמדי מפתח/ערך לסיווג ולזיהוי ההתראה. הוא דורש את התוויות הבאות: severity,‏ code ו-resource.
    alertRules.annotations אופציונלי. מטא-נתונים לא מזהים להתראה כצמדי מפתח/ערך.
  3. שומרים את קובץ ה-YAML.

  4. מחילים את הגדרת המשאב על שרת Management API באותו מרחב שמות של כללי ההתראה שמבוססים על מדדים או על יומנים:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f ALERT_RULE_NAME.yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫KUBECONFIG_PATH: הנתיב לקובץ kubeconfig של שרת Management API.
    • ‫ALERT_RULE_NAME: השם של קובץ ההגדרה של MonitoringRule או LoggingRule.

מפרט המשאבים המלא

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

מגדירים כללי התראות במשאבים הבאים בהתאמה אישית:

  • ‫MonitoringRule: כללים שמבוססים על מדדים.
  • ‫LoggingRule: כללים שמבוססים על יומנים.

MonitoringRule

קובץ ה-YAML הבא מציג תבנית למשאב בהתאמה אישית מסוג MonitoringRule. מידע נוסף מופיע במאמרי העזרה של ה-API.

# Configures either an alert or a target record for precomputation.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: MONITORING_RULE_NAME
spec:
  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure metric-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-metric-based-alert

    # Define the PromQL expression to evaluate for this rule.
    expr: rate({service_name="bob-service"} [1m])

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    # Additional labels are optional.
    labels:
      severity: error
      code: 202
      resource: AIS
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
  • ‫MONITORING_RULE_NAME: השם של קובץ ההגדרה של MonitoringRule.

LoggingRule

קובץ ה-YAML הבא מציג תבנית למשאב בהתאמה אישית מסוג LoggingRule. מידע נוסף מופיע במאמרי העזרה של ה-API.

# Configures either an alert or a target record for precomputation.
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_RULE_NAME
spec:
  # Choose the log source to base alerts on (operational or audit logs).
  # Optional.
  # Valid options: 'operational' and 'audit'
  # Default value: 'operational'
  source: operational

  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure log-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-log-based-alert

    # Define the LogQL expression to evaluate for this rule.
    expr: rate({service_name="bob-service"} [1m])

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    # Additional labels are optional.
    labels:
      severity: warning
      code: 202
      resource: AIS
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
  • ‫LOGGING_RULE_NAME: השם של קובץ ההגדרה של LoggingRule.