הגדרת התראות דרך Cloud Logging

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

המרכז האישי ב-Service Health משולב עם התראות ביומן של Cloud Monitoring, כך שאתם יכולים להגדיר התראות ולקבל אותן. אפשר ליצור התראות לגבי התנאים הבאים:

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

ההתראות האלה מבוססות על התראות ביומן, ולכן כל התראה משויכת לאירוע ב-Monitoring. כל התראה כוללת קישורים לדף האירוע וקישור ישיר ללוח הבקרה של Service Health. מידע נוסף על חקירת אירועים

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

בקטעים הבאים מוסבר איך להגדיר מדיניות התראות ביומן, ומוצגות דוגמאות לתרחישי התראות נפוצים. ההתראות ביומן מסתמכות על ערוצי התראות, שתומכים במגוון שילובים, כולל אימייל, SMS,‏ Pub/Sub, ‏ Webhook, ‏ Slack ו-PagerDuty.

כדי להפנות התראה ליעד שלא מופיע ברשימת האפשרויות שלמעלה, כדאי להשתמש ב-webhook. לדוגמה, אתם יכולים להגדיר webhook ל-ServiceNow. מידע נוסף זמין במאמר Configure webhook in Google Cloud במסמכי התיעוד של ServiceNow.

פורמטים של התראות

פורמטים של התראות משתנים בהתאם לערוץ ההתראות.

אימייל

אם תגדירו את ההתראה לשליחת אימייל, כשיושג התנאי להפעלת ההתראה, הודעה מהכתובת alerting-noreply@google.com תישלח לכתובת האימייל שתבחרו.

Slack

אם תגדירו את ההתראה המותאמת אישית כך שתפורסם ב-Slack, הודעה מאפליקציית Cloud Monitoring תופיע בערוץ שבחרתם כשהאירוע יתרחש.

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

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

אפשר להגדיר מדיניות התראות ב-Service Health או באמצעות Google Cloud CLI.

למדיניות התראות נדרש ערוץ התראות ב-Cloud Monitoring, שמוגדר בו לאן תישלח ההתראה. אם אין לכם ערוץ התראות, אתם יכולים ליצור אותו בGoogle Cloud מסוף או באמצעות Monitoring API.

במרכז הבקרה של Service Health

מדריך למתחילים

שימוש ב-CLI של gcloud

כדי להגדיר מדיניות התראות באמצעות ה-CLI של gcloud:

  1. משיגים את מזהה ערוץ ההתראות.

    א. רשימת מזהי ערוצי ההתראות

    gcloud config set project PROJECT_ID
    gcloud beta monitoring channels list
    

    ב. מחפשים רשומות עם projects/PROJECT_ID/notificationChannels/. הערכים האלה הם מזהי ערוצי ההתראות.

  2. יוצרים קובץ policy.json עם התוכן הבא:

    • הסמל ALERT_NAME מופיע בהתראה. דוגמה: "Google Cloud SQL incident"

    • ALERT_CONDITION מגדיר מתי להציג התראה.

      • כשמגדירים תנאים, משתמשים בערכים שנמצאים ב-Google Cloud products וב-locations.
      • דוגמאות לתנאים להתראה:

        תנאי להצגת אזהרה ערך של ALERT_CONDITION
        קבלת התראות על כל אירוע ב-Cloud SQL jsonPayload.impactedProductIds =~ \"hV87iK5DcEXKgWU2kDri\"
        קבלת התראות על כל אירוע שמתרחש באזור us-central1-a jsonPayload.impactedLocations =~ \"us-central1-a\"

      דוגמאות נוספות לתנאים להפעלת התראות

    • NOTIFICATION_CHANNEL הוא מזהה ערוץ ההתראות שאחזרתם באמצעות הפקודה list בשלב הקודם. דוגמה: projects/PROJECT_ID/notificationChannels/885798905074.

    בקטע הקוד הבא מוצגת דוגמה לקובץ policy.json.

    {
      "displayName": "ALERT_NAME",
      "combiner": "OR",
      "conditions": [ {
        "displayName": "Log match condition",
        "conditionMatchedLog": {
          "filter": "ALERT_CONDITION",
         } } ],
      "notificationChannels": [ "NOTIFICATION_CHANNEL" ],
    }
    
  3. יוצרים את מדיניות Cloud Monitoring.

    gcloud config set project PROJECT_ID
    gcloud monitoring policies create --policy-from-file="policy.json"
    

התאמה אישית של תוכן ההתראה

אפשר להגדיר את השדות בתוך ההתראה באמצעות השדות הבאים בקובץ ה-JSON:

  • labelExtractors: המאפיינים שרוצים לכלול בכותרת של ההתראה. כדי להתאים אישית את המאפיינים האלה, אפשר לעיין במדריך LabelExtractors.
  • content: הפורמט של ההתראה באימייל. אפשר להשתמש בהחלפת משתנים ב-Markdown, שמאפשרת להשתמש ב-labelExtractors כמשתנים. כדי להתאים אישית את המשתנים האלה, אפשר לעיין במדריך הזה.

במאמר דוגמאות למדיניות התראות ולתנאים מוסבר איך להתאים אישית את ההתראות.

בדיקת ההתראה

כדי לבדוק את ההתראה, תשתמשו ביומן בדיקה לדוגמה באמצעות Cloud Logging. ב-test log מוצג ההיגיון של ההתראה שהגדרתם קודם.

שימוש במסוף Google Cloud

צריך לבצע את הפעולות הבאות:

  1. עוברים אל דף העזר של השיטה entries:write, שמאפשרת לכתוב רשומות ביומן ב-Cloud Logging. יופיע חלון שבו תוכלו לנסות את השיטה.
  2. בגוף הבקשה, משנים את PROJECT_ID לפרויקט שלכם.
  3. משנים את השדות jsonPayload בגוף הבקשה, בהתאם לתנאי ההתראה שאתם בודקים. אפשר גם לבדוק את סכימת event_log.proto ולשנות את הערכים ביומן כדי לבדוק תרחישים ספציפיים שמעניינים אתכם.

    {
      "entries": [
        {
          "logName": "projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity",
          "resource": {
            "type": "servicehealth.googleapis.com/Event",
            "labels": {
              "resource_container": "PROJECT_ID",
              "location": "global",
              "event_id": "U4AqrjwFQYi5fFBmyAX-Gg"
            }
          },
          "labels": {
            "servicehealth.googleapis.com/new_event": "true",
            "servicehealth.googleapis.com/updated_fields": "[]"
          },
          "jsonPayload": {
            "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog",
            "category": "INCIDENT",
            "title": "EXAMPLE... NOT REAL INCIDENT",
            "description": "EXAMPLE FOR TESTING, NOT REAL INCIDENT. We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.",
            "updateTime": "2022-07-15T22:26:40Z",
            "endTime": "2022-07-16T22:13:20Z",
            "impactedLocations": "['us-east1', 'australia-southeast2']",
            "impactedProducts": "['CloudSQL']",
            "impactedProductIds": "['hV87iK5DcEXKgWU2kDri']",
            "startTime": "2022-07-13T12:26:40Z",
            "nextUpdateTime": "2022-07-13T16:26:40Z",
            "state": "ACTIVE",
            "detailedState": "CONFIRMED",
            "relevance": "RELATED"
          }
        }
      ]
    }
    
  4. לוחצים על Execute. יופיע חלון שבו Google APIs Explorer מבקש גישה לחשבון שלכם.

  5. מאפשרים גישה ל-Google APIs Explorer. בחלון עם גוף הבקשה מוצג צילום המסך הבא, שמצביע על הצלחה.

    ‫200 הודעות

  6. ממתינים כמה דקות ומוודאים שההתראה הופעלה.

    1. במסוף Google Cloud , נכנסים לדף Cloud Monitoring > Incidents.

      כניסה לדף Incidents

    2. בודקים אם קיבלתם התראה בערוץ ההתראות שמוגדר במדיניות ההתראות.

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

שימוש ב-gcloud

אפשר גם ליצור רשומה ליומן בדיקה באמצעות קריאה ל-Cloud Logging API באמצעות פקודת gcloud.

  1. (אופציונלי) בודקים את הפרויקט הנוכחי.

    gcloud config list
    
  2. מגדירים את הפרויקט הנוכחי.

    gcloud_name config set project PROJECT_ID
    
  3. כתיבת רשומה ביומן הבדיקות.

    gcloud logging write --payload-type=json
    LOG_NAME
    '{ "category": "INCIDENT", "relevance": "IMPACTED", "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog", "description": "This is a test log entry"}'
    
  4. ממתינים כמה דקות ומוודאים שההתראה הופעלה.