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

כרגע מוצג התיעוד של 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 הוא שם השגיאה. הקידומת מציינת את סוג המדיניות שגרמה לשגיאה. בדוגמה שלמעלה, אפשר לראות שהשגיאה נוצרה על ידי מדיניות לחילוץ משתנים, ושם השגיאה הוא 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. במקרה כזה, כלל השגיאה יופעל רק אם המשתנה הזה מתקיים. טיפ אחרון: מאחר שכללי שגיאות יכולים להכיל מספר שלבים, הדפוס הזה הוא דרך טובה לארגן את כללי השגיאות בבלוקים.

<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. משתנה ההודעה הוא מיוחד כי הוא משתנה לפי הקשר. בתהליך הבקשה הוא מתנהג כמו משתנה של בקשה, ובתהליך התגובה אפשר להשתמש בו כדי לקבל/להגדיר ערכי תגובה. מידע נוסף זמין במאמר תרחישים לדוגמה למשתנים של הודעות.

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