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

בדף הזה מתואר התהליך ליצירת כללי התראה על סמך יומנים ומדדים מסביבות מבודדות (air-gapped) של Google Distributed Cloud ‏(GDC), כדי לאפשר ניטור פרואקטיבי ותגובה מהירה יותר לאירועים.

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

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

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

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

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

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

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

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

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

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

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

צריך לפנות לאדמין ה-IAM בארגון ולבקש את התפקידים הבאים:

  • MonitoringRule PA Creator (monitoringrule-pa-creator): יצירת משאבים מותאמים אישית מסוג MonitoringRule.
  • MonitoringRule PA Editor (monitoringrule-pa-editor): עריכה או שינוי של MonitoringRule משאבים בהתאמה אישית.
  • MonitoringRule PA Viewer (monitoringrule-pa-viewer): הצגת MonitoringRule משאבים בהתאמה אישית.

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

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

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

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

צריך לפנות לאדמין ה-IAM בארגון ולבקש את התפקידים הבאים:

  • LoggingRule PA Creator (loggingrule-pa-creator): יצירת LoggingRule משאבים מותאמים אישית.
  • עריכת כלל רישום ביומן PA (loggingrule-pa-editor): עריכה או שינוי של משאבים מותאמים אישית LoggingRule.
  • LoggingRule PA Viewer (loggingrule-pa-viewer): צפייה במשאבים מותאמים אישית של LoggingRule.

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

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

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

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

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

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

המסוף

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

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

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

    • בשדה שם קבוצת כללי ההתראה, מזינים שם לקבוצת הכללים.
    • בשדה Rule evaluation interval (מרווח הערכת הכלל), מזינים את מספר השניות של כל מרווח.
    • בשדה Limit (מגבלה), מזינים את המספר המקסימלי של ההתראות.

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

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

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

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

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

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

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

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

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

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

  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.