פתרון בעיות

במסמך הזה מתוארים תרחישים נפוצים לפתרון בעיות ב-Error Reporting.

אירועי שגיאה שנשלחים אל Error Reporting API לא מוצגים

אתם שולחים אירועי שגיאה ל Google Cloud פרויקט באמצעות Error Reporting API. עם זאת, האירועים האלה לא מוצגים בדף Error Reporting.

כדי לפתור את הבעיה:

  1. מוודאים ש-Error Reporting API מופעל.

    מפעילים את Error Reporting API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

  2. פותחים את Cloud Shell ומשתמשים ב-Google Cloud CLI כדי לוודא שאפשר לשלוח אירועי שגיאה לפרויקט:

    1. מריצים את הפקודה הבאה:

      gcloud beta error-reporting events report --service Manual --service-version test1 \
        --message "java.lang.TestError: msg
          at com.example.TestClass.test(TestClass.java:51)
          at com.example.AnotherClass(AnotherClass.java:25)"
      
    2. עוברים לדף Error Reporting ומוודאים שמוצגת בו שגיאה עם הכותרת TestError: msg.

      עבור אל Error Reporting

    3. עוברים לדף Logs Explorer ומחפשים את רשומות היומן שלכם עם הערך TestError. רשומת היומן נוצרת באופן אוטומטי.

      כניסה אל Logs Explorer

  3. מוודאים שהאפליקציה שולחת את אירוע השגיאה לנקודת הקצה report, ושהאפליקציה מעצבת את גוף הבקשה כאובייקט ReportedErrorEvent. כדאי גם לוודא שנוצרים רשומות ביומן. כשמשתמשים ב-Error Reporting API, רשומות ביומן עם הודעות שגיאה בפורמט תקין נוצרות באופן אוטומטי ונכתבות ב-Cloud Logging. רשומות היומן האלה נכתבות ביומן ששם הקובץ שלו מעוצב באופן הבא:logName

    projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
    

אירועי שגיאה מוצגים, אבל Error Reporting API מושבת

השבתתם את Error Reporting API. עם זאת, בדף Error Reporting במסוף Google Cloud מוצגים אירועי שגיאה.

זה תקין. אירועי שגיאה נוצרים בתגובה לקריאות ל-Error Reporting API שבוצעו לנקודת הקצה report. עם זאת, אירועי שגיאה נגזרים גם כש-Error Reporting יכול לנתח את נתוני היומן.

אירועי שגיאה לא נגזרים מנתוני יומן

אתם מצפים ש-Error Reporting יסרוק את נתוני היומן ויסיק אירועי שגיאה. עם זאת, בדף Error Reporting לא מוצגים אירועי שגיאה, למרות שרשומות היומן מתעדות נתוני שגיאה.

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

  1. מוודאים ש-Error Reporting יכול לנתח את הרשומות ביומן.

    השירות Error Reporting הוא שירות גלובלי שמבוסס על Cloud Logging, והוא יכול לנתח רשומות ביומן אם כל התנאים הבאים מתקיימים:

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

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

    gcloud logging sinks list
    

    הפקודה מחזירה פלט שדומה לזה:

    NAME               DESTINATION                                                                                                FILTER
    _Default           logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Default                          NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
    _Required          logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Required                         LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency")
    logs-from-samples  logging.googleapis.com/projects/my-team-project/locations/global/buckets/sample-bucket                     (empty filter)
    regional_logs      logging.googleapis.com/projects/my-team-project/locations/europe-west1/buckets/bucket_for_regional_logs    (empty filter)
    test-logs          logging.googleapis.com/projects/team-b-project/locations/global/buckets/test-bucket                        (empty filter)
    

    בדוגמה הזו, פרויקט המקור Google Cloud של הרשומות ביומן הוא my-team-project. כתוצאה מכך:

    • הכלי Error Reporting יכול לנתח את רשומות היומן שמנותבות על ידי ה-sinks _Default, _Required ו-logs-from-samples, כי קטגוריית היומן מאוחסנת באותו פרויקט שמנתב את רשומות היומן.
    • Error Reporting לא יכול לנתח את רשומות היומן שמאוחסנות בקטגוריית היומן שנקראת test-logs כי יעד הניקוז ב-my-team-project מעביר את רשומות היומן לקטגוריית יומן בפרויקט אחר.
  2. משתמשים ב-Google Cloud CLI כדי לוודא שאפשר לכתוב רשומות ביומן שיוצרות אירוע שגיאה.

    1. מריצים את הפקודה הבאה:

      gcloud logging write --payload-type=json test-errors-log \
        '{"serviceContext":
          {"service": "manual-testing"},
          "message": "Test Error\n at /test.js:42:42",
          "context": {"httpRequest":
            {"url": "/test","method": "GET","responseStatusCode": 500}}}'
      
    2. עוברים לדף Logs Explorer ומחפשים את רשומות היומן שלכם עם הערך Test Error.

      כניסה אל Logs Explorer

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

    3. עוברים לדף דיווח על שגיאות ומוודאים שמוצגת בו שגיאה עם הכותרת Test Error.

      עבור אל Error Reporting

  3. עוברים לדף Logs Explorer (כלי לבדיקת יומנים) ומוודאים שהאפליקציה כותבת רשומות ביומן בפורמט הצפוי.

    כניסה אל Logs Explorer

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

רשומה ביומן מכילה דוח קריסות אבל לא נוצר אירוע שגיאה

נוצרת רשומה ביומן שהשדה message שלה מכיל דוח קריסות. עם זאת, בדף Error Reporting [דיווח על שגיאות] לא מופיע אירוע שגיאה תואם.

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

  • חשוב לוודא שהשדה jsonPayload לא כולל את השדות stack_trace או exception. אם השדות האלה קיימים, המערכת לא מעריכה את השדה message.

  • חשוב לוודא שהמבנה של דוח קריסות הוא באחד הפורמטים הנתמכים של שפות תכנות. ‫Error Reporting לא מתעד את דוח קריסות כשמשתמשים בפורמט לא נתמך.

מידע נוסף מופיע במאמר בנושא עיצוב רשומה ביומן לדיווח על אירועי שגיאה.