ניפוי באגים בתוסף

אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

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

  • כלי המעקב ב-Apigee Edge מאפשר לכם לבדוק ולערוך באופן שיטתי את קוד שרת ה-proxy של ה-API במהלך הפיתוח שלו. הודעות המעקב כוללות שגיאות מקוד שרת ה-API, כולל הגדרות המדיניות ושרת ה-API.

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

  • תוספים יוצרים רשומות ביומן בזמן הריצה. (יומני התוספים זמינים רק לאדמינים ארגוניים).

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

    היומנים כוללים גם רשומות מקידוד פנימי של התוסף. כשבודקים את היומנים, חשוב לזכור שחלק מהרשומות לא רלוונטיות לשגיאה שאתם מתקנים. בדרך כלל, רשומות ביומן שקשורות לתוספים מתחילות במילה details, כמו ברשומת היומן הבאה מהתוסף Cloud Pub/Sub:

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

סוגי שגיאות וגורמים להן

עיבוד הבקשה של התוסף מתבצע ממדיניות ExtensionCallout בשרת proxy של API, דרך התוסף, אל המשאב החיצוני ואז חזרה. לכן, שגיאה יכולה להתרחש בכל אחד מהמקומות האלה.

השגיאות שעשויות להופיע שייכות לאחת מהקטגוריות הבאות.

שגיאות בהגדרת התוסף

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

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

ראיות בכלי המעקב

בעורך שרת ה-proxy, השגיאות האלה יופיעו בדרך כלל כשגיאות ברמה 4xx או ברמה 5xx. עם זאת, בעורך שרת ה-proxy לא יוצגו פרטים ספציפיים לגבי הסיבה לשגיאה, אלא רק הודעה על כך שהתוסף החזיר שגיאה.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

ראיות ביומני התוספים

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

details: 'Project does not exist: example-test-12345'

שגיאות בהגדרת המדיניות של ExtensionCallout

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

  • ערכים שגויים שהמשאב החיצוני העריך

    מצב כזה יכול לקרות אם שגיאת התצורה נראתה תקינה לתוסף, אבל לא תקינה למשאב החיצוני. לדוגמה, אם התוסף מעביר מזהה מסד נתונים שגוי ל-Cloud Spanner, ‏Cloud Spanner יחזיר שגיאה שתירשם ביומן של התוסף:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    ייתכן שהשגיאה הזו תופיע גם אם ה-JSON של ההגדרות שגוי ברכיב <Input> של המדיניות. בתוספים מסוימים, חלק מה-JSON מעובד על ידי התוסף וחלק מועבר למשאב. לדוגמה, קובץ ה-JSON של ההגדרות של תוסף Cloud Logging כולל אובייקט metadata שהתוכן שלו מועבר אל Cloud Logging. שמות מפתחות שגויים שם – כמו typ במקום type – עלולים להחזיר שגיאות מהמשאב החיצוני שיופיעו כרשומים ביומן התוסף:

    details: 'Resource type cannot be empty'
    
  • ערכים שגויים שהתוסף העריך

    השגיאות האלה כוללות שגיאות תחביר בחלקים של רכיב ה-JSON של <Input> שנבדקים על ידי המדיניות, שגיאות איות בשם הפעולה ברכיב <Action> וכו'. בדרך כלל השגיאות האלה יופיעו בכלי המעקב, אבל לא ביומני התוסף.

ראיות בכלי המעקב

בעורך שרת ה-proxy, השגיאות האלה יופיעו בדרך כלל כשגיאות ברמה 4xx או ברמה 5xx. עם זאת, בעורך שרת ה-proxy לא יוצגו פרטים ספציפיים לגבי הסיבה לשגיאה, אלא רק הודעה על כך שהתוסף החזיר שגיאה. השגיאה הבאה מופיעה בכלי Trace כשכותבים שגיאה בשם הפעולה בתוסף Cloud Firestore.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

ראיות ביומני התוספים

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

זוהי שגיאה שבה הבקשה למשאב החיצוני נכשלה מסיבות שלא קשורות לתוסף.

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

ראיות בכלי המעקב

בעורך שרת ה-proxy, השגיאות האלה יופיעו בדרך כלל כשגיאות ברמה 4xx או ברמה 5xx. עם זאת, בעורך שרת ה-proxy לא יוצגו פרטים ספציפיים לגבי הסיבה לשגיאה, אלא רק הודעה על כך שהתוסף החזיר שגיאה.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

ראיות ביומני התוספים

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

details: 'Row [jonesy42] in table user already exists'