מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
תיאור הבעיה
בתמונה הזו אפשר לראות שבקשות API לא מתועדות בממשק המשתמש של Edge כשמתחיל סשן מעקב:
הודעת שגיאה
כשהבעיה הזו מתרחשת, לא יוצגו הודעות שגיאה בממשק המשתמש של Edge.
סיבות אפשריות
בטבלה הבאה מפורטות סיבות אפשריות לכשל בקבלת בקשות API ב-Edge UI Trace:
הסיבה | תיאור | הוראות לפתרון בעיות שרלוונטיות |
---|---|---|
בקשות שלא מטופלות על ידי מעבד ההודעות | כדי לתעד את המעקב, בקשות API חייבות לעבור עיבוד על ידי מעבד ההודעות של הרכיב Edge. אם בקשת API לא מצליחה להגיע ל-Apigee Edge, תיכשל בנקודת הכניסה של Edge (כלומר, נתב) או נכשל לפני שהוא מעובד על ידי מעבד ההודעות, אז לא ניתן לתעד את המעקב. | משתמשי Edge בענן הציבורי והפרטי |
ה-Proxy ל-API לא נמצא בעץ הסיווג | מעבדי הודעות ב-Apigee משתמשים בהגדרה של כלל ניתוב שנקרא 'עץ סיווג' לשליחת בקשות על סמך שם המארח, נתיב הבסיס, הגרסה והסביבה של הבקשה הנכנסת. אם שרת ה-proxy הרלוונטי ל-API יוסר מסיבה כלשהי מעץ הסיווג, יכול להיות שעסקאות המעקב לא יאוכלסו. | משתמשי Edge בענן פרטי |
הסיבה: בקשות שלא טופלו על ידי מעבד ההודעות
אבחון
כדי לתעד בקשת API בסשן Trace, מעבד ההודעות של הרכיב Edge חייב לעבד את בקשת ה-API. יש כמה סיבות לכך שבקשת API לא מתועדת בעסקת Trace.
לדוגמה, אם בקשת API לא מצליחה להגיע ל-Apigee Edge, תיכשל בנקודת הכניסה של Edge (כלומר, נתב) או שהעיבוד שלו נכשל לפני שמעבד ההודעות מעבד אותו, אז לא ניתן לתעד את המעקב. כל אחד מהתרחישים האלה מפורט בפירוט בהמשך.
תרחיש 1: הבקשות לא מגיעות ל-Apigee Edge
סיבה
בתרחיש הזה, יכול להיות שהשגיאה נגרמת בגלל בעיה ברזולוציית DNS או בקישוריות הרשת. במקרה כזה, ייתכן שהשגיאה הבאה תופיע במהלך הרצת הפקודה הזו:
curl https://hostName:port/apiProxyBasePath/requestPath
curl: (6) Could not resolve host: hostName
רזולוציה
אפשר לבדוק את הגדרת ה-DNS באמצעות הפקודה הבאה:
dig hostName
אפשר לאמת את הקישוריות לרשת באמצעות הפקודה הבאה:
telnet hostName port
תרחיש 2: בקשות נכשלות בנתב של Apigee Edge
סיבה
בתרחיש הזה, השגיאה עשויה להיגרם כתוצאה מכשל בלחיצת יד של TLS או SSL. במקרה כזה, יכול להיות שתקבלו אחת מהשגיאות הבאות:
Received fatal alert: handshake_failure
HTTP/1.1 400 Bad Request
ייתכן גם שתופיע שגיאה של אישור SSL.
רזולוציה
כדאי לעיין במדריכים הבאים כדי לפתור את הבעיות האלה:
תרחיש 3: מעבד ההודעות לא יכול לעבד בקשות
סיבה
בתרחיש הזה, מעבד ההודעות של Apigee לא יכול למצוא את ה-API Proxy המארח והנתיב הווירטואלי שצוינו. כתוצאה מכך, יכול להיות שתראו השגיאות הבאות:
HTTP/1.1 404 Not Found
{ "fault":{ "faultstring":"Unable to identify proxy for host: default and url: \/apiProxyBasePath/requestPath", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
רזולוציה
אפשר לעיין במדריך הזה כדי לפתור את הבעיה: 404 לא ניתן לזהות את שרת ה-proxy למארח.
הסיבה: שרת ה-proxy ל-API לא נמצא בעץ הסיווג
אבחון
אם מעבד ההודעות לא מצליח למצוא שרת proxy ל-API בעץ הסיווג שלו, בקשות API לאותו שרת proxy לא יוצגו בסשנים של מעקב בממשק המשתמש של Edge.
כדי לברר אם זה המצב, יש לפעול לפי השלבים הבאים:
מתחברים לכל אחד ממעבדי ההודעות ובודקים אם הגרסה הספציפית של ה-API המבוקש נפרסה בסביבה הרלוונטית של מעבד ההודעות באמצעות הפקודה הבאה:
curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
פלט לדוגמה:
הפקודה שלמעלה תציג רשימה של גרסאות קודמות שנפרסו. לדוגמה, אם גרסה 12 נפרסה, יתקבל הפלט הבא:
[ "12" ]
אלא אם יש לסירוגין שגיאות HTTP 404, סביר להניח שתראו שהגרסה הספציפית נפרסה.
קוראים את עץ הסיווג ובודקים אם קיים שם שרת proxy ל-API באמצעות הפקודה הבאה:
curl -i http://localhost:8082/v1/classification/tree | grep apiName
חוזרים על שלבים 1 ו-2 לכל מעבד הודעות. אם השם של שרת ה-proxy ל-API חסר בעץ הסיווג של אחד ממעבדי ההודעות, פועלים לפי הפתרון שמופיע בהמשך.
רזולוציה
יש לפעול לפי השלבים הבאים כדי לפתור את הבעיה. חשוב לנקוט את כל אמצעי הזהירות שנדרשים כדי למנוע הפסקות זמניות בשירות בסביבת הייצור שעשויות להתרחש כתוצאה מהפעלה מחדש של מעבדי ההודעות בזמן שיש עומס של בקשות רבות.
מתחברים לכל אחד מהמארחים של מעבד ההודעות שחסר להם שרת proxy ספציפי ל-API בעץ הסיווג ומשתמשים בפקודה שבהמשך כדי להפעיל מחדש את מעבד ההודעות:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
לאחר ההפעלה מחדש, צריך להשתמש בפקודה הבאה כדי להמתין עד שהיא תופעל:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
כשמעבד ההודעות מוכן, מאמתים את הזמינות של שרת ה-proxy ל-API באמצעות הפקודה הבאה:
curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
פלט לדוגמה:
הפקודה שלמעלה תציג רשימה של גרסאות קודמות שנפרסו. לדוגמה, אם גרסה 12 נפרסה, יתקבל הפלט הבא:
[ "12" ]
אלא אם יש לסירוגין שגיאות HTTP 404, סביר להניח שתראו שהגרסה הספציפית נפרסה.
קוראים את עץ הסיווג ומאמתים את קיומו של שם ה-Proxy ל-API באמצעות הפקודה הבאה:
curl -i http://localhost:8082/v1/classification/tree | grep apiName
אם הבעיה עדיין נמשכת, עוברים אל פרטי האבחון שחובה לאסוף.
חובה לאסוף פרטי אבחון
אם הבעיה נמשכת אחרי שביצעתם את ההוראות שלמעלה, עליכם לאסוף את פרטי האבחון הבאים ולשתף אותם עם התמיכה של Apigee Edge:
סוג מידע על אבחון | פקודה |
---|---|
פלט של פקודת סשן מעקב | curl -v management-server-host:8080/v1/runtime/organizations/orgName/environments/envName/apis/apiProxyName/revisions/revisionNumber/debugsessions -u user |
יומן שרת ניהול | /opt/apigee/var/log/edge-management-server/logs/system.log |
יומנים של מעבד ההודעות | /opt/apigee/var/log/edge-message-processor/logs/system.log |
פלט של פקודות telnet /netcat מניהול שרת למעבד הודעות |
telnet MessageProcessor_IP 8082 nc -vz MessageProcessor_IP 8082 |
פלט פקודת netstat במעבדי ההודעות | netstat -an > netstat.txt |
גרסאות של רשימות פלט שנפרסו עבור שרת ה-proxy של ה-API הספציפי בכל מעבדי ההודעות | curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions |
פלט עץ הסיווג בכל מעבדי ההודעות | curl -i http://localhost:8082/v1/classification/tree |