כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
סרטונים
וידאו | התיאור |
---|---|
שגיאת שרת פנימית 500 – נגרמה על ידי הקצה העורפי | מדגים 500 Internal Server Error בזמן אמת שנגרם על ידי שרת הקצה העורפי, יחד עם שלבים לפתרון השגיאה. |
תיאור הבעיה
אפליקציית הלקוח מקבלת קוד סטטוס HTTP של 500
עם ההודעה
Internal Server Error
כתגובה לקריאות ל-API.
קוד מצב ה-HTTP 500
הוא תגובה כללית לשגיאה. המשמעות היא שהשרת נתקל במצב לא צפוי שמנע ממנו למלא את הבקשה. השגיאה הזו
בדרך כלל מוחזרת על ידי השרת כאשר אין קוד שגיאה אחר שמתאים.
הודעות שגיאה
אפליקציית הלקוח מקבלת את קוד התגובה הבא:
HTTP/1.1 500 Internal Server Error
בנוסף, ייתכן שתופיע הודעת שגיאה שדומה לזו:
דוגמה מס' 1
דוגמה מס' 1 לתגובה של שרת הקצה העורפי
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
דוגמה מס' 2
דוגמה מס' 2 לתגובה של שרת הקצה העורפי
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
גורמים אפשריים
שרת הקצה העורפי יכול להחזיר את 500 Internal Server Error
בגלל כמה סיבות. המדריך הזה מסביר איך לפתור בעיות באמצעות שלבים נפוצים ואיך לפתור את
השגיאה הזו, ללא קשר לגורם שלה.
הסיבות האפשריות לכך הן:
סיבה | התיאור | ההוראות לפתרון בעיות הרלוונטיות עבור |
---|---|---|
שגיאה בשרת הקצה העורפי | השרת העורפי עלול להיכשל מסיבה כלשהי. | משתמשי Edge פרטיים וציבוריים בענן |
שלבים נפוצים באבחון
אפשר להשתמש באחד מהכלים/הטכניקות הבאים כדי לאבחן את השגיאה הזו:
מעקב באמצעות API
הליך מס' 1: שימוש ב-API Monitoring
כדי לאבחן את השגיאה באמצעות API Monitoring:
- נכנסים לממשק המשתמש של Apigee Edge בתור משתמשים עם תפקיד מתאים.
עוברים לארגון שבו רוצים לבדוק את הבעיה.
- עוברים לדף ניתוח > API Monitoring > חקירה.
- בוחרים את מסגרת הזמן הספציפית שבה הבחנתם בשגיאות.
יש להציב את קוד השגיאה ביחס ל-Time.
בוחרים תא שמכיל את קוד השגיאה
messaging.adaptors.http.flow.ErrorResponseCode
כפי שמוצג למטה:מידע על קוד התקלה
messaging.adaptors.http.flow.ErrorResponseCode
מוצג כפי שמוצג למטה:לוחצים על View Logs (הצגת היומנים) ומרחיבים את השורה של הבקשה שנכשלה.
- בחלון Logs, שימו לב לפרטים הבאים:
- מזהה ההודעה של הבקשה
- קוד סטטוס:
500
- מקור התקלה:
target
- קוד שגיאה:
messaging.adaptors.http.flow.ErrorResponseCode
נתוני מעקב
הליך מס' 2: שימוש בכלי המעקב
כדי לאבחן את השגיאה באמצעות כלי המעקב:
- מפעילים את סשן המעקב ואז
- להמתין עד שתתרחש השגיאה
500 Internal Server Error
עם קוד השגיאהmessaging.adaptors.http.flow.ErrorResponseCode
, או - אם הצלחת לשחזר את הבעיה, יש לבצע את הקריאה ל-API כדי לשחזר את הבעיה
500 Internal Server Error
- להמתין עד שתתרחש השגיאה
יש לוודא שהאפשרות Show allflowInfos מופעלת:
- בוחרים אחת מהבקשות שנכשלו ובודקים את המעקב.
- אפשר לנווט בשלבים השונים של המעקב ולאתר את המיקום שבו אירעה הכשל.
השגיאה תוצג בדרך כלל ברצף אחרי השלב תגובה שהתקבלה משרת היעד באופן הבא:
- מנווטים לשלב AX (רישום נתונים ב-Analytics) במעקב ולוחצים עליו.
גוללים למטה לקטע Phase Details Response Headers ומוצאים את הערכים של X-Apigee-fault-code ו-X-Apigee-fault-source, ושל X-Apigee-Message-ID, לפי ההוראות הבאות:
- שימו לב לערכים של X-Apigee-fault-code, X-Apigee-fault-source, ו-X-Apigee-Message-ID:
כותרות תגובה | Value |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
הליך מס' 3: שימוש ביומני גישה של NGINX
כדי לאבחן את השגיאה באמצעות יומני הגישה של NGINX:
- אם אתם משתמשים בענן פרטי, תוכלו להשתמש ביומני הגישה של NGINX כדי לזהות את המידע העיקרי על HTTP
500 Internal Server Error
. כדאי לבדוק את יומני הגישה של NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- אפשר לחפש כדי לראות אם יש שגיאות
500
עם קוד השגיאהmessaging.adaptors.http.flow.ErrorResponseCode
במהלך משך זמן ספציפי (אם הבעיה אירעה בעבר) או אם יש בקשות שעדיין נכשלות עם500
. אם יש שגיאות
500
כאשר X-Apigee-fault-code שתואם לערך שלmessaging.adaptors.http.flow.ErrorResponseCode
, צריך לקבוע את הערך של X-Apigee-fault-source.שגיאה 500 לדוגמה ביומן הגישה של NGINX:
הרשומה לדוגמה שלמעלה מיומן הגישה של NGINX כוללת את הערכים הבאים עבור X-Apigee-fault-code ו-X-Apigee-fault-code
כותרות Value X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
הסיבה: שגיאה בשרת הקצה העורפי
אבחון
יכולות להיות כמה סיבות להצגת התגובה של שרת הקצה העורפי 500 Internal Server Error
. תצטרכו לאבחן כל מצב בנפרד.
- קובעים את קוד ה-Fault, מקור ה-Fault של השגיאה שנצפתה באמצעות API Monitoring, כלי המעקב או יומני הגישה של NGINX, כמו שמוסבר בשלבי האבחון הנפוצים.
- אם Fault Source הוא
target
ו-Fault Code (קוד שגיאה) הואmessaging.adaptors.http.flow.ErrorResponseCode
, המשמעות היא שהשגיאה מוחזרת על ידי שרת הקצה העורפי. - כדי לאבחן את הגורם לבעיה, אפשר לבצע אחת מהפעולות הבאות:
נתוני מעקב
שימוש במעקב:
אם יש לכם הפעלת מעקב לכשל, עליכם לבצע את השלבים הבאים:
- ב'מעקב', בוחרים את בקשת ה-API שנכשלה עם
500 Internal Server Error
. בוחרים את השלב תגובה שהתקבלה משרת היעד מתוך בקשת ה-API שנכשלה, כפי שמוצג באיור הבא:
גוללים למטה לקטע פרטי השלב ובודקים את תוכן התגובה,שמכיל את התגובה משרת הקצה העורפי.
דוגמה לתוכן תשובה:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
בתגובה שלמעלה, שימו לב שהודעת השגיאה משרת הקצה העורפי היא Not Aauthorized (לא מורשה). האפשרות הזו מציינת שייתכן שהמשתמש העביר פרטי כניסה לא חוקיים, ולכן הוא מקבל את השגיאה הזו.
שרת לקצה העורפי של שיחות
ביצוע קריאה ישירה לשרת הקצה העורפי:
אתם יכולים לבצע שיחה ישירה לשרת הקצה העורפי, וגם:
- יש לך אפשרות לאמת אם קיבלת את אותה תגובת
500 Internal Server Error
שקיבלת כשהבקשה נשלחה דרך Apigee Edge - בדיקת הודעת השגיאה (תגובה) שהתקבלה משרת הקצה העורפי
כדי לבצע את הקריאה הישירה לשרת הקצה העורפי, מבצעים את השלבים הבאים:
- חשוב לוודא שיש לך את כל הכותרות הנדרשות, הפרמטרים של השאילתה וכל פרטי הכניסה שצריך להעביר לשרת הקצה העורפי כחלק מהבקשה.
- אם השירות לקצה העורפי נגיש לציבור, אפשר להשתמש בפקודה
curl
, ב-Postman או בכל לקוח REST אחר ולהפעיל את ה-API של שרת הקצה העורפי באופן ישיר. אם אפשר לגשת לשרת הקצה העורפי רק דרך מעבדי ההודעות, אפשר להשתמש בפקודה
curl
, ב-Postman או בכל לקוח REST אחר ולהפעיל את ה-API של שרת הקצה העורפי ישירות ממעבד ההודעות.- צריך לבדוק אם השירות לקצה העורפי אכן מחזיר
500 Internal Server Error
, לבדוק את הודעת השגיאה (תגובה) שהוחזרה על ידי השרת לקצה העורפי ולקבוע מה הסיבה לשגיאה הזו.
יומנים של שרת קצה עורפי
שימוש ביומנים של שרת הקצה העורפי
- בודקים את היומנים של השרת העורפי ומנסים לקבל פרטים נוספים על השגיאה ועל מה שגרם לה.
- אם אפשר, כדאי להפעיל את מצב ניפוי הבאגים בשרת הקצה העורפי כדי לקבל פרטים נוספים על השגיאה והסיבה.
- ב'מעקב', בוחרים את בקשת ה-API שנכשלה עם
צריך לבדוק אם נעשה שימוש בשרשור של שרת Proxy בנקודת הקצה הספציפית של היעד של שרת ה-Proxy שנכשל. כלומר, אם שרת היעד או נקודת הקצה של היעד מפעילים שרת proxy אחר ב-Apigee Edge. כדי לקבוע זאת:
אם יש לכם את נתוני המעקב של הבקשה שנכשלה, מנווטים לשלב Request send to target server (הבקשה נשלחה לשרת יעד) ולוחצים על Show Curl.
- החלון Curl for Request Shet to Request to Target Server ייפתח, ממנו תוכלו לקבוע את הכינוי של שרת היעד כמארח.
- צריך לבדוק את נקודת הקצה של היעד של שרת ה-proxy של ה-API ולבדוק אם כתובת ה-URL של שרת הקצה העורפי או שם המארח בשרת היעד מפנה לשרת Proxy אחר או לשרת הקצה העורפי שלך.
- אם הכינוי של שרת היעד מפנה לכינוי מארח וירטואלי, מדובר בשרשור של שרת proxy. במקרה כזה, צריך לחזור על כל השלבים שלמעלה עבור
שרת ה-proxy המשורשר עד שמוצאים את הגורם בפועל ל-
500 Internal Server Error
. במקרים האלה,500 Internal Server Error
עשוי להתרחש גם בשרתי proxy אחרים בשרשרת בשלבים אחרים, וניתן לאבחן ולפתור אותם לפי ההוראות במדריך הזה או ב מדריך 500 Internal Server Error. - אם הכינוי של שרת היעד מפנה לשרת הקצה העורפי, עוברים אל פתרון.
רזולוציה
אם מתברר שהשגיאה 500
מגיעה משרת הקצה העורפי, יש לפנות לצוות שרת הקצה העורפי כדי לתקן את הבעיה בהתאם.
בדוגמה שלמעלה, יכול להיות שיהיה צורך לבקש מהמשתמשים להעביר פרטי כניסה תקפים כדי לפתור את הבעיה.
נקודות עיקריות שכדאי לשים לב אליהן
- ניתן להציג את הודעת השגיאה בפועל שהוחזרה על ידי שרת הקצה העורפי עבור
500 Internal Server Error
רק אם תיעדת את פעילות המעקב לבקשות שנכשלו. - מטעמי אבטחה, התגובה של שרת הקצה העורפי לא תירשם ב-API Monitoring, ביומני הגישה של NGINX או ביומנים של מעבד ההודעות.
- אפשר לעיין ביומנים של שרת הקצה העורפי או להפעיל את מצב ניפוי הבאגים בקצה העורפי כדי לקבל פרטים נוספים על
500 Internal Server Error
או להציג את הודעת השגיאה שהוחזרה על ידי שרת הקצה העורפי.
צריך לאסוף פרטי אבחון
אם הבעיה נמשכת גם אחרי שביצעתם את ההוראות שלמעלה, עליכם לאסוף את פרטי האבחון הבאים ולפנות לתמיכה של Apigee Edge.
אם אתם משתמשים ב-Public Cloud, עליכם לספק את הפרטים הבאים:
- שם הארגון
- שם הסביבה
- שם שרת proxy ל-API
- צריך להשלים את הפקודה
curl
כדי לשחזר את השגיאה500
- קובץ מעקב שמכיל את הבקשות עם
500 Internal Server Error
- אם השגיאות
500
לא מתרחשות כרגע, עליך לציין את תקופת הזמן עם פרטי אזור הזמן שבהם התרחשו שגיאות מסוג500
בעבר.
אם אתם משתמשים בענן פרטי, עליכם לספק את הפרטים הבאים:
- זוהתה הודעת שגיאה מלאה בבקשות שנכשלו
- הארגון, שם הסביבה ושם ה-proxy של ה-API שלגביהם מוצגות
שגיאות מסוג
500
- חבילת proxy ל-API
- קובץ מעקב שמכיל את הבקשות עם
500 Internal Server Error
- יומני הגישה של NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
היכן:ORG, ENV ו-PORT# מוחלפים בערכים בפועל.
- יומני המערכת של מעבד ההודעות
/opt/apigee/var/log/edge-message-processor/logs/system.log
- תקופת הזמן עם פרטי אזור הזמן שבה אירעו השגיאות מסוג
500
.