בקשות API שלא תועדו בממשק המשתמש של Edge

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

תיאור הבעיה

בתמונה הבאה אפשר לראות שבקשות API לא מתועדות בממשק המשתמש של Edge כשמתחיל סשן מעקב:

הודעת שגיאה

לא יוצגו הודעות שגיאה בממשק המשתמש של Edge כשהבעיה הזו מתרחשת.

סיבות אפשריות

בטבלה הבאה מפורטות הסיבות האפשריות לכשל בתיעוד בקשות API ב-Edge UI Trace:

הסיבה תיאור הוראות לפתרון בעיות הרלוונטיות
בקשות שלא עובדו על ידי מעבד ההודעות כדי לתעד נתוני מעקב, מעבד ההודעות של Edge צריך לעבד בקשות API. אם בקשת API לא מצליחה להגיע ל-Apigee Edge, המערכת נכשלת בנקודת הכניסה ל-Edge (כלומר, נתב) או שהמעקב ייכשל לפני העיבוד שלו על ידי מעבד ההודעות. משתמשי Edge הציבוריים והפרטיים
שרת proxy ל-API לא נמצא בעץ הסיווגים מעבדי הודעות של Apigee משתמשים בהגדרת כלל ניתוב שנקראת 'עץ סיווג' כדי לשלוח בקשות על סמך שם המארח, הנתיב הבסיסי, הגרסה והסביבה של הבקשה הנכנסת. אם שרת ה-proxy הרלוונטי ל-API יוסר מסיבה כלשהי מעץ הסיווגים, יכול להיות שטרנזקציות המעקב לא יאוכלסו. משתמשי ענן פרטי של Edge

הסיבה: בקשות שלא מעובדות על ידי מעבד ההודעות

אבחון

כדי לתעד בקשת API בסשן מעקב, מעבד ההודעות של Edge צריך לעבד את בקשת ה-API. יש כמה סיבות לכך שבקשת API לא מתועדת בטרנזקציית מעקב.

לדוגמה, אם בקשת 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.

  • רזולוציה

    כדאי לעיין במדריכים הבאים כדי לפתור את הבעיות האלה:

    כישלונות לחיצת יד ב-TLS/SSL

    בקשה לא תקינה 400 – שגיאת אישור SSL

תרחיש 3: מעבד ההודעות לא יכול לעבד בקשות

  • סיבה

    בתרחיש הזה, מעבד ההודעות של Apigee לא מצליח למצוא את שרת ה-API של ה-API למארח הווירטואלי ולנתיב שצוינו. כתוצאה מכך, ייתכן שתופיע אחת מהשגיאות הבאות:

    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.

כדי לבדוק אם זה המצב, יש לפעול לפי השלבים הבאים:

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

    curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
    

    פלט לדוגמה:

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

    [ "12" ]
    

    אלא אם תתקלו בשגיאות HTTP 404 לסירוגין, סביר להניח שהגרסה הספציפית הזאת נפרסה.

  2. קוראים את עץ הסיווגים ובודקים אם קיים שם שרת proxy של API באמצעות הפקודה הבאה:

    curl -i http://localhost:8082/v1/classification/tree | grep apiName
    
  3. חוזרים על שלבים 1 ו-2 לכל מעבד הודעות. אם שם ה-Proxy שצוין עבור ה-API חסר בעץ הסיווג של מעבדי ההודעות, פועלים לפי הפתרון הבא.

פתרון

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

  1. מתחברים לכל אחד מהמארחים של מעבד ההודעות שחסר בהם שרת ה-proxy הספציפי של ה-API בעץ הסיווגים, ומשתמשים בפקודה שלמטה כדי להפעיל מחדש את מעבד ההודעות:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  2. אחרי ההפעלה מחדש, משתמשים בפקודה הבאה כדי להמתין עד שהיא תהפוך לפעילה:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
    
  3. ברגע שמעבד ההודעות מוכן, מאמתים את הזמינות של שרת ה-API מסוג שרת proxy באמצעות הפקודה הבאה:

    curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
    

    פלט לדוגמה:

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

    [ "12" ]
    

    אלא אם תתקלו בשגיאות HTTP 404 לסירוגין, סביר להניח שהגרסה הספציפית הזאת נפרסה.

  4. קוראים את עץ הסיווג ומאמתים את קיומו של שם שרת ה-proxy של ה-API באמצעות הפקודה הבאה:

    curl -i http://localhost:8082/v1/classification/tree | grep apiName
    

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

חובה לאסוף פרטי אבחון

אם הבעיה נמשכת אחרי ביצוע ההוראות שלמעלה, יש לאסוף את פרטי האבחון הבאים ולשתף אותם עם התמיכה של Apigee Edge:

סוג המידע האבחון    פקודה
פלט של פקודת session session
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