מה צריך לדעת על שגיאות שקשורות למדיניות

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

בנושא הזה נסביר על המבנה של שגיאות במדיניות ועל סוגי משתני הזרימה שמוגדרים כשמתרחשת שגיאה במדיניות. המידע הזה חיוני אם אתם מתכננים ומטמיעים טיפול בשגיאות בשרתי ה-proxy שלכם.

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

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

כשמדיניות מסוימת גורמת לשגיאה, Edge עובר מיד לתהליך השגיאה ויוצר הודעת שגיאה. ההודעה הזו שנוצרת על ידי המערכת היא אובייקט JSON שכולל שני חלקי מידע: errorcode ו-faultstring.

לדוגמה:

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse"
   }
}

בואו ננתח במהירות את הודעת השגיאה הזו:

errorcode מורכב מקידומת ושם שגיאה, באופן הבא: [prefix].[error_name]. בדוגמה שלמעלה, steps.extractvariables היא הקידומת ו-SourceMessageNotAvailable הוא שם השגיאה. הקידומת מציינת איזה סוג מדיניות יצר את השגיאה. בדוגמה שלמעלה, אפשר לראות שמדיניות Extract Variables (חילוץ משתנים) יצרה את השגיאה, ושם השגיאה הוא SourceMessageNotAvailable.

התג faultstring מכיל תיאור של השגיאה. מחרוזת השגיאה בדרך כלל כוללת רמזים שיעזרו לכם למצוא את הבעיה הספציפית שגרמה לשגיאה, כמו שם המדיניות, שם של משתנה שלא נפתר או כל דבר אחר שתרם לשגיאה. לדוגמה, בהודעת השגיאה שלמעלה, foo הוא שם משתנה ההודעה שלא נפתר שמופיע בהפניה במדיניות, ו-ParseJsonResponse הוא שם המדיניות שהפעילה את השגיאה.

משתנים ספציפיים לשגיאות שקשורות למדיניות

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

המשתנה fault.name

כשמדיניות מחזירה שגיאה, היא מגדירה את משתנה הזרימה fault.name לערך error_name של קוד השגיאה (כפי שמתואר בקטע הקודם). מאוד נפוץ להעריך את המשתנה הזה כדי להפעיל באופן מותנה כללי שגיאה.

דוגמה לכלל תקלות שבודק את הערך של fault.name:

<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
</FaultRule>

חשוב לזכור שכאשר מדיניות מפעילה שגיאה, המשתנה fault.name תמיד מוגדר לשם השגיאה.

המשתנה [prefix].[policy_name].failed

בנוסף ל-fault.name, משתנה נוסף שמפתחים בודקים בדרך כלל הוא הדגל [prefix].[policy_name].failed, שמוגדר כ-True או כ-False כשמדיניות מופעלת. בכללי תקלות, כדאי לבדוק מתי הערך הוא true – כלומר, לבדוק אם אירעה שגיאה. כך יוצרים תנאי שבודק את הדגל [prefix].[policy_name].failed. כדי לבדוק את המשתנה הזה בצורה נכונה, צריך לדעת שני דברים:

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

כדי להמחיש, הנה עוד דוגמה לכלל שגיאה. שימו לב איך נוצר שם המשתנה [prefix].[policy_name].failed בתנאי החיצוני. במקרה הזה, הקידומת היא extractvariables ושם המדיניות הוא ParseJsonResponse. במקרה הזה, כלל התקלה יופעל רק אם המשתנה הזה הוא true. טיפ: כללי שגיאה יכולים לכלול כמה שלבים, ולכן התבנית הזו היא דרך טובה לארגן את כללי השגיאה בבלוקים.

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition>
</FaultRule>

מידע על המשתנים error ו-message

המשתנה error זמין רק בתהליך השגיאה של שרת proxy. משתנה השגיאה יכול לספק מידע שימושי, כמו הודעת השגיאה, קוד הסטטוס, משפט הסיבה וכו'. תבנית העיצוב של משתנה השגיאה היא:

error.[error_component] = [value]

לדוגמה:

error.message = "request message is not available for ExtractVariable: ParseJsonResponse"

ו

error.status.code = "500"

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

בחומר העזר בנושא משתנים אפשר למצוא מידע על כל המשתנים של Edge, כולל error ו-message.