כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
סרטונים
לקבלת מידע נוסף על שגיאות 503, אפשר לצפות בסרטונים הבאים:
וידאו | התיאור |
---|---|
פתרון בעיות ופתרון בעיות בשירות 503 לא זמין – NoActiveTargets | מידע על הנושאים הבאים:
|
תיאור הבעיה
אפליקציית הלקוח מקבלת את קוד הסטטוס 503 של תגובת HTTP עם ההודעה Service Unavailable וקוד השגיאה NoActiveTargets של בקשות שרת ה-API של שרת ה-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 לא זמין עם קוד השגיאה NoActiveTargets בדרך כלל מתועדת כשמשתמשים בשרת יעד אחד או יותר בהגדרת נקודת הקצה (endpoint) של היעד ב-API של שרת ה-proxy.
בטבלה הבאה מפורטות הסיבות האפשריות לשגיאה 503 Service Unavailable (שירות 503 לא זמין) עם קוד השגיאה NoActiveTargets:
סיבה | התיאור | מי יכול לבצע את השלבים לפתרון בעיות |
---|---|---|
שרת היעד מושבת | שרת היעד שצוין בהגדרה של נקודת הקצה (endpoint) של היעד מושבת. | משתמשי Edge הציבוריים והפרטיים |
שגיאות חיבור בגלל רזולוציית DNS שגויה | פענוח ה-DNS של שרת היעד הוביל ליצירת כתובות IP שגויות, שהובילו לשגיאות בחיבור. | משתמשי ענן פרטי של Edge |
שגיאות התחברות | בעיות ברשת או בקישוריות מונעות מהלקוח להתחבר לשרת. | משתמשי ענן פרטי של Edge |
כתובת אימייל חלופית שגויה של מארח יעד | מארח שרת היעד שצוין שגוי או מכיל תווים לא רצויים (כמו רווח). | משתמשי Edge הציבוריים והפרטיים |
שליחת לחיצת יד של SSL נכשלה | לחיצת היד של TLS/SSL נכשלה בין הלקוח לשרת. | משתמשי Edge הציבוריים והפרטיים |
בדיקות תקינות שנכשלו | בדיקות תקינות שהוגדרו לבדיקת התקינות של שרת היעד עלולות להיכשל מסיבה כלשהי. | משתמשי ענן פרטי של Edge |
הסיבה: שרת היעד מושבת
אם כל שרתי היעד שצוינו בהגדרה של נקודת הקצה של היעד מושבתים, תתקבל התשובה 503 Service Unavailable (שירות לא זמין 503) עם קוד השגיאה NoActiveTargets.
אבחון
- קובעים את השם של שרת היעד שנעשה בו שימוש בהגדרה הספציפית של Target Endpoint של שרת ה-Proxy הכשל של ה-API, באחת מהדרכים הבאות:
- אם יש נקודת יעד אחת, צריך לבדוק את נקודת הקצה הספציפית הזו.
- אם יש כמה נקודות קצה לטירגוט ואתם לא בטוחים איזו מהן השביתה את שרת היעד, עליכם לפעול לפי השלבים הבאים:
- מפעילים את סשן המעקב, מבצעים את הקריאה ל-API ומשחזרים את הבעיה – 'שירות 503 לא זמין'.
- במעקב, עוברים אל תהליך הבקשה של היעד שהתחיל וקובעים את השם של נקודת הקצה של היעד כפי שמוצג בהמשך:
- אחרי שמאתרים את נקודת הקצה של היעד, מקבלים את השם של שרת היעד מההגדרה של נקודת הקצה, כמו בדוגמה הבאה:
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
בדוגמה שלמעלה יש שרת יעד אחד בשם demo-target.
- אפשר לקבל את ההגדרה של כל אחד משרתי היעד שנעשה בהם שימוש בנקודת הקצה של היעד, באמצעות קריאה ל-Edge API או ל-Edge API.
ממשק המשתמש של Edge
כדי למצוא את ההגדרה באמצעות ממשק המשתמש של Edge:
- עוברים אל ניהול > סביבות > שרתי יעד.
- בוחרים את הסביבה הספציפית שבה רואים את הכשל.
- כדי לקבל את ההגדרה של שרת היעד, צריך לחפש את השם של שרת היעד הספציפי.
לדוגמה, מקלידים את השם של שרת היעד
demo-target
ותראו את ההגדרה שלו כמו בדוגמה הבאה:כאן שמים לב שלשרת היעד דמו-יעד יש כינוי מארח, יציאה # ו-SSL. עם זאת, שרת היעד עצמו מושבת . הסטטוס הזה מסומן על ידי הרכיב מופעל שמופיע באפור.
ממשק API של Edge
כך מוצאים את ההגדרה באמצעות 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 מראה שהיעד הדמוגרפי של שרת היעד מושבת כי הרכיב IsEnabled מוגדר כ-False.
מאחר ששרת היעד מושבת, מעבד ההודעות ישלח באופן מיידי את השירות 503 לא זמין עם קוד השגיאה NoActiveTargets כתגובה ללקוח.
רזולוציה
מוודאים ששרתי היעד הספציפיים שבהם נעשה שימוש בהגדרת היעד של נקודת הקצה בשרת ה-API של ה-API מופעלים תמיד.
ממשק המשתמש של Edge
- עוברים אל ניהול > סביבות > שרתי יעד.
- בוחרים את הסביבה הספציפית שבה רואים את הכשל.
- יש לחפש את השם של שרת היעד הספציפי כדי לקבל את ההגדרה שלו.
- בוחרים את שרת היעד הספציפי ולוחצים על Edit.
- מסמנים את התיבה Enabled.
- לוחצים על עדכון.
ממשק API של Edge
משתמשים ב- 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 Monitoring אפשר לבודד במהירות אזורים בעייתיים כדי לאבחן שגיאות, ביצועים וזמן אחזור ואת המקור שלהן, כמו אפליקציות למפתחים, שרתי proxy של API, יעדים לקצה העורפי או פלטפורמת ה-API.
שלב תרחיש לדוגמה
שמדגים איך לפתור בעיות של 5xx בממשקי ה-API באמצעות API Monitoring. לדוגמה,
יכול להיות שתרצו להגדיר התראה לקבלת התראה כשמספר השגיאות של messaging.adaptors.http.flow.NoActiveTargets
חורג מסף מסוים.
צריך לאסוף פרטי אבחון
אם הבעיה נמשכת גם אחרי שביצעת את ההוראות שלמעלה, עליך לאסוף את פרטי האבחון הבאים. אפשר לפנות אל התמיכה של Apigee ולשתף אותה:
- אם את/ה משתמש/ת ב-Public Cloud, עליך לספק את הפרטים הבאים:
- שם הארגון
- שם הסביבה
- שם שרת proxy ל-API
- השלמה של פקודת curl לשחזור השגיאה
- קובץ מעקב המכיל את הבקשות עם שירות 503 לא זמין עם קוד השגיאה NoActiveTargets
- אם אתם משתמשים בענן פרטי, עליכם לספק את הפרטים הבאים:
- זוהתה הודעת השגיאה המלאה
- שם הסביבה
- חבילת שרת proxy ל-API
- קובץ מעקב המכיל את הבקשות עם שירות 503 לא זמין עם קוד השגיאה NoActiveTargets
- יומני הגישה של NGINX
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
) - יומנים של מעבד הודעות
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
)