אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
סרטונים
מידע נוסף על שגיאות 503 זמין בסרטונים הבאים:
| וידאו | תיאור |
|---|---|
| פתרון בעיות שקשורות לשגיאה 503 (השירות לא זמין) – NoActiveTargets | מידע על הנושאים הבאים:
|
תיאור הבעיה
אפליקציית הלקוח מקבלת את קוד הסטטוס של תגובת ה-HTTP 503 עם ההודעה Service Unavailable וקוד השגיאה NoActiveTargets עבור בקשות ה-proxy ל-API.
הודעת שגיאה
תופיע תגובת השגיאה הבאה:
HTTP/1.1 503 Service Unavailable
הודעת השגיאה הבאה תופיע בתגובת ה-HTTP:
{
"fault": {
"faultstring": "The Service is temporarily unavailable",
"detail": {
"errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
}
}
}
גורמים אפשריים
תגובת ה-HTTP 503 Service Unavailable עם קוד השגיאה NoActiveTargets מוצגת בדרך כלל כשמשתמשים בשרת יעד אחד או יותר בהגדרת נקודת הקצה של היעד ב-API Proxy.
בטבלה הבאה מפורטות הסיבות האפשריות לתגובה 503 Service Unavailable עם קוד השגיאה NoActiveTargets:
| סיבה | תיאור | מי יכול לבצע את השלבים לפתרון בעיות |
|---|---|---|
| שרת היעד מושבת | השרת שהוגדר כשרת היעד בהגדרות של נקודת הקצה של היעד מושבת. | משתמשים ב-Edge Public Cloud וב-Edge Private Cloud |
| שגיאות בחיבור בגלל פענוח DNS שגוי | רזולוציית ה-DNS של שרת היעד הניבה כתובות IP שגויות שמובילות לשגיאות בחיבור. | משתמשים ב-Edge Private Cloud |
| שגיאות בחיבור | בעיות ברשת או בקישוריות מונעות מהלקוח להתחבר לשרת. | משתמשים ב-Edge Private Cloud |
| כינוי שגוי של מארח היעד | המארח של שרת היעד שצוין שגוי או מכיל תווים לא רצויים (כמו רווח). | משתמשים ב-Edge Public Cloud וב-Edge Private Cloud |
| כשלים בלחיצת היד של SSL | לחיצת היד של TLS/SSL בין הלקוח לשרת נכשלה. | משתמשים ב-Edge Public Cloud וב-Edge Private Cloud |
| כשלים בבדיקת תקינות | יכול להיות שבדיקות התקינות שהוגדרו כדי לבדוק את התקינות של שרת היעד ייכשלו מסיבה כלשהי. | משתמשים ב-Edge Private Cloud |
הסיבה: שרת היעד מושבת
אם כל שרתי היעד שצוינו בהגדרת נקודת היעד מושבתים, תקבלו תגובה עם קוד השגיאה NoActiveTargets וקוד הסטטוס 503 Service Unavailable.
אבחון
- כדי לקבוע את השם של שרת היעד שבו נעשה שימוש בהגדרות הספציפיות של נקודת היעד של שרת ה-proxy של ה-API שנכשל, אפשר להשתמש באחת מהשיטות הבאות:
- אם יש נקודת קצה יעד אחת, צריך לבדוק את נקודת הקצה הספציפית הזו.
- אם יש כמה נקודות קצה של היעד ואתם לא בטוחים באיזו מהן השרת של היעד מושבת, פועלים לפי השלבים הבאים:
- מפעילים את הפעלת מעקב, מבצעים את הקריאה ל-API ומשחזרים את הבעיה – 503 Service Unavailable.
- מתוך המעקב, עוברים אל Target Request Flow Started וקובעים את השם של נקודת הקצה של היעד, כמו שמוצג בהמשך:
- אחרי שמזהים את נקודת הקצה של היעד, מקבלים את שם שרת היעד שמוגדר בנקודת הקצה של היעד, כמו בדוגמה הבאה:
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>בדוגמה שלמעלה, יש שרת יעד יחיד בשם demo-target.
- מקבלים את ההגדרה של כל אחד משרתי היעד שמשמשים בנקודת הקצה של היעד באמצעות ממשק המשתמש של Edge או קריאה ל-Edge API.
ממשק משתמש של Edge
כדי לקבל את ההגדרה באמצעות ממשק המשתמש של Edge:
- עוברים אל ניהול > סביבות > שרתי יעד.
- בוחרים את הסביבה הספציפית שבה השגיאה מתרחשת.
- מחפשים את שם שרת היעד הספציפי כדי לקבל את ההגדרה של שרת היעד.
לדוגמה, אם מקלידים את שם שרת היעד
demo-target, רואים את ההגדרה שלו כמו שמוצג בהמשך:
שימו לב שבשרת היעד demo-target יש כינוי מארח, מספר יציאה ו-SSL מופעל. עם זאת, שרת היעד עצמו מושבת, כפי שמצוין על ידי הרכיב ENABLED שמוצג באפור.
Edge API
כדי לקבל את ההגדרה באמצעות Edge API:
משתמשים ב- Get TargetServer API כדי לקבל את ההגדרה של שרת היעד.
פלט של הגדרת שרת היעד
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>false</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>פלט ה-API של Apigee מראה ששרת היעד demo-target מושבת כי האלמנט IsEnabled מוגדר כ-false.
מכיוון ששרת היעד מושבת, מעבד ההודעות ישלח באופן מיידי את 503 Service Unavailable עם קוד השגיאה NoActiveTargets כתגובה ללקוח.

רזולוציה
מוודאים שהשרתים הספציפיים של היעד שבהם נעשה שימוש בהגדרת נקודת הקצה של היעד ב-API Proxy תמיד מופעלים.
ממשק משתמש של Edge
- עוברים אל ניהול > סביבות > שרתי יעד.
- בוחרים את הסביבה הספציפית שבה השגיאה מתרחשת.
- מחפשים את השם הספציפי של שרת היעד כדי לקבל את ההגדרה שלו.
- בוחרים את שרת היעד הספציפי ולוחצים על עריכה.
- מסמנים את תיבת הסימון מופעל.
- לוחצים על עדכון.
Edge API
משתמשים בפונקציה Update a Target Server API כדי לעדכן את ההגדרה של שרת היעד ולוודא שהערך של IsEnabled מוגדר ל-true במטען הייעודי (payload) של בקשת ה-API, כמו שמוצג בהמשך:
<TargetServer name="demo-target">
<Host>demo-target.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
</TargetServer>
אם הבעיה נמשכת, צריך לעבור אל איסוף מידע לצורך אבחון.
אבחון בעיות באמצעות מעקב אחר קריאות ל-API
מעקב אחר API מאפשר לכם לבודד במהירות אזורים בעייתיים כדי לאבחן בעיות שקשורות לשגיאות, לביצועים ולזמן האחזור, ולמצוא את המקור שלהן, כמו אפליקציות למפתחים, שרתי proxy של API, יעדי קצה עורפיים או פלטפורמת ה-API.
דוגמה לתרחיש
שמדגים איך לפתור בעיות מסוג 5xx בממשקי ה-API באמצעות API Monitoring. לדוגמה,
אפשר להגדיר התראה כדי לקבל עדכון כשמספר messaging.adaptors.http.flow.NoActiveTargets
התקלות חורג מסף מסוים.
צריך לאסוף פרטי אבחון
אם הבעיה נמשכת גם אחרי שמבצעים את ההוראות שלמעלה, צריך לאסוף את פרטי האבחון הבאים. אפשר ליצור קשר עם התמיכה של Apigee ולשתף איתם את הקבצים:
- אם אתם משתמשים ב-Public Cloud, עליכם לספק את הפרטים הבאים:
- שם הארגון
- שם הסביבה
- שם ה-proxy ל-API
- השלמת פקודת curl לשחזור השגיאה
- קובץ מעקב שמכיל את הבקשות עם השגיאה 503 Service Unavailable (השירות לא זמין) עם קוד השגיאה NoActiveTargets
- אם אתם משתמשים ב-Private Cloud, עליכם לספק את הפרטים הבאים:
- הודעת השגיאה המלאה שזוהתה
- שם הסביבה
- חבילת proxy ל-API
- קובץ מעקב שמכיל את הבקשות עם השגיאה 503 Service Unavailable (השירות לא זמין) עם קוד השגיאה NoActiveTargets
- יומני גישה של NGINX
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log) - יומנים של מעבד בקשות
(
/opt/apigee/var/log/edge-message-processor/logs/system.log)