בדיקת שגיאות באפליקציה שקרסה באמצעות Error Reporting

ב-Error Reporting אפשר לעקוב אחרי תנאי שגיאה מכל האפליקציות והשירותים ב Google Cloud פרויקט ומאפליקציות ב-Amazon Elastic Compute Cloud‏ (EC2).

במדריך הזה נסביר איך:

  1. סימולציה של שגיאה משירות בפרויקט Google Cloud .

  2. אפשר להשתמש ב-Error Reporting כדי לראות את השגיאה ולשנות את סטטוס השגיאה, כדי שאנשים אחרים בצוות ידעו שהבעיה בטיפול.

  3. כדאי להגדיר התראות כדי לדעת מתי מתרחשים סוגים חדשים של שגיאות.


לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :

תראו לי איך


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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. פותחים Cloud Shell עבור Google Cloud הפרויקט. במהלך ההתחלה, מוצגת ההודעה מתבצעת התחברות.

    פותחים את Cloud Shell.

  7. מגדירים את כתובת האימייל כערוץ התראות נתמך.

סימולציה של שגיאה

  1. כדי ליצור 11 שגיאות לדוגמה, מריצים את הסקריפט הבא ב-Cloud Shell:

      COUNTER=0
      while [  $COUNTER -lt 11 ]; do
          gcloud beta error-reporting events report --service tutorial --service-version v$((COUNTER/10+1)) \
              --message "java.lang.RuntimeException: Error rendering template $COUNTER
                at com.example.TestClass.test(TestClass.java:51)
                at com.example.AnotherClass(AnotherClass.java:25)
                at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
          if [ $COUNTER -eq 10 ]; then
            echo "All sample errors reported."
          fi
          let COUNTER=COUNTER+1
      done
    

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

    All sample errors reported.

הצגת השגיאות ב-Error Reporting

  1. נכנסים לדף Error Reporting במסוף Google Cloud :

    עבור אל Error Reporting

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

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

    בצילום המסך הבא מוצג דף לדוגמה של דיווח על שגיאות:

    ממשק המשתמש שמציג את רשימת השגיאות.

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

הגדרת התראות

אתם יכולים להגדיר את Error Reporting כך שתקבלו התראה כשסוג חדש של שגיאה יתקבל. לא נשלחות התראות כשיש מקרים חדשים של שגיאות קיימות:

  1. נכנסים לדף Error Reporting במסוף Google Cloud :

    עבור אל Error Reporting

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

  2. כדי להפעיל התראות באימייל, לוחצים על הגדרת התראות.

  3. בתפריט ערוצי התראות, בוחרים את כתובת האימייל ולוחצים על שמירה.

  4. כדי ליצור סוגים חדשים של שגיאות, לוחצים על Activate Cloud shell ומריצים את הסקריפט הבא:

      COUNTER=0
      while [ $COUNTER -lt 3 ]; do
            gcloud beta error-reporting events report --service tutorial --service-version v1 \
                --message "java.lang.ArrayIndexOutOfBoundsException: $COUNTER
                  at com.example.AppController.createUser(AppController.java:42)
                  at com.example.User(User.java:31)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
          if [ $COUNTER -eq 10 ]; then
            echo "All sample errors reported."
          fi
          let COUNTER=COUNTER+1
      done
    

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

    All sample errors reported.

  5. בודקים אם קיבלתם אימייל מ-Stackdriver Notifications.

יצירת הודעות שגיאה מאפליקציית App Engine

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

פריסת אפליקציה

כדי להוריד ולפרוס אפליקציה ב-App Engine:

  1. מורידים ומגדירים את האפליקציה מהפרויקט ב-GitHub‏ python-docs-samples:

    1. משכפלים את הפרויקט ל-Cloud Shell:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      

      ‫Git מחזיר הודעה שדומה להודעה הבאה:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      Cloning into 'python-docs-samples'...
      
    2. יוצרים סביבת Python מבודדת ומפעילים אותה:

      cd python-docs-samples/appengine/standard_python3/hello_world
      virtualenv env -p python3
      source env/bin/activate
      
    3. יחסי תלות של התקנות:

      pip install -r requirements.txt
      
  2. מוודאים שההתקנה וההגדרה של האפליקציה בוצעו בהצלחה:

    1. מריצים את האפליקציה:

      python main.py
      
    2. כדי להציג את האפליקציה בדף אינטרנט מקומי, לוחצים על הקישור שמוצג ב-Cloud Shell. דף האינטרנט מציג את Hello World!.

    3. כדי להפסיק את האפליקציה הפועלת, מזינים Ctrl-C ב-Cloud Shell.

  3. מעלים את האפליקציה ל-App Engine:

    gcloud app deploy
    

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

  4. כדי לראות את האפליקציה בדפדפן, מריצים את הפקודה הבאה ב-Cloud Shell:

    gcloud app browse
    

    אם Google Cloud CLI לא מצליח למצוא את הדפדפן, הפקודה הקודמת מציגה הודעת שגיאה וקישור. לוחצים על הקישור שמוצג. ההודעה Hello, World! מוצגת בדפדפן.

יצירת שגיאה

כדי ליצור שגיאה ש-Error Reporting יתעד ויציג, צריך לבצע את הפעולות הבאות:

  1. עריכה של main.py ושינוי

    return 'Hello World!
    

    הם במצב

    return 'Hello World!' + 1000
    

    כשמבצעים את השינוי הזה, מתרחשת חריגה ב-Python TypeError כי אסור לשרשר מחרוזת ומספר שלם.

  2. מעלים את האפליקציה ששונתה ל-App Engine:

    gcloud app deploy
    
  3. חוזרים לכרטיסיית הדפדפן שמכילה את האפליקציה הפועלת וטוענים מחדש את הדף. בגלל השינוי שביצעת, במקום שהדף יציג את Hello, World!, הוא מציג הודעת שגיאה:

    Internal Server Error
    The server encountered an internal error and was unable to complete your
    request. Either the server is overloaded or there is an error in the
    application.
    

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

הצגת השגיאה ב-Error Reporting

כדי לראות את השגיאה, פועלים לפי ההוראות בקטע הקודם הצגת השגיאות ב-Error Reporting.

הסרת המשאבים

כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים