יומנים הם דרך טובה לפתרון בעיות בהתקנה של Apigee hybrid. פרטים נוספים זמינים במאמר בנושא רישום ביומן.
אפשר לראות את היומנים של Apigee synchronizer באמצעות הפקודהkubectl logs. לדוגמה:
kubectl logs -n APIGEE_NAMESPACE apigee-synchronizer-apigee-example-test
רשומות ביומן של הכלי לסנכרון
בטבלה הבאה מתוארים השדות שמופיעים בקובצי היומן של הכלי לסנכרון.
| שדה | מציין |
|---|---|
org: |
שם הארגון |
env: |
שם הסביבה |
target: |
הנתיב של הישות שהרשומה ביומן מייצגת |
action: |
פעולה SYNC=פעולת סנכרון במעלה הזרם
REPLICATE=פעולת שכפול/הורדה |
context-id: |
גרסת החוזה, אם רלוונטי |
לדוגמה:
2019-02-05 00:00:59,098 org:hybrid env:test target: action:SYNC context-id: mode: Apigee-Timer-5 INFO CONFIG-CHANGE - SyncContext.syncUpStream() : Upstream sync started with https://apigee.googleapis.com
הסבר על יומני הסנכרון
אם אתם צריכים לפתור בעיה בכלי לסנכרון, כדאי לעיין בקובצי היומן. הטבלה הבאה יכולה לעזור לכם לפתור בעיות שמופיעות ביומני הכלי לסנכרון. מידע נוסף זמין במאמר בנושא רישום ביומן.
| רשומה ביומן | מה זה אומר |
|---|---|
org:test env:dev target: action:SYNC context-id: mode:
Apigee-Timer-0 INFO CONFIG-CHANGE - SyncContext.syncUpStream() :
Upstream sync
started with http://localhost:8080 |
התחיל סקר במעלה הזרם עבור הארגון והסביבה, וניתנה כתובת URL של מישור הניהול |
2019-01-21 16:58:02,275 org:test env:qa target:
action:SYNC context-id: mode: Apigee-Timer-1 INFO CONFIG-CHANGE -
ManagementServerBasedReplicationContext.getContract() :
Upstream contract poll returned 200 |
החוזה התקבל בהצלחה |
2019-01-21 16:58:02,536 org:test env:dev target:
action:SYNC context-id: mode: Apigee-Timer-0 INFO CONFIG-CHANGE -
ManagementServerBasedReplicationContext.getContract() :
Received a new
contract version 20190121.090851.339 |
התקבלה גרסת חוזה |
2019-01-21 17:58:56,530 org:test env:qa
target:/organizations/test/environments/qa action:REPLICATE
context-id:20190121.090859.699 mode: Apigee-Timer-1 INFO
CONFIG-CHANGE - ConfigReplicator.startReplication() :
Replication
started |
מציין את תחילת השכפול. שדות MDC מציינים את הפרטים לגבי מה שמשוכפל |
2019-01-21 17:58:56,654 org:test env:qa
target:/organizations/test/environments/qa/resourcefiles/js/JavaScriptCallout.js
action:REPLICATE context-id:20190121.090859.699 mode:
Apigee-Timer-1 INFO CONFIG-CHANGE -
ConfigReplicator.startReplication() : Replication
complete |
מציין שהשכפול הסתיים. שדות MDC מציינים את הפרטים לגבי מה שמשוכפל |
2019-01-21 17:58:56,654 org:test env:qa
target:/organizations/test/environments/qa action:REPLICATE
context-id:20190121.090859.699 mode: Apigee-Timer-1
ERROR
CONFIG-CHANGE - ConfigReplicator.startReplication() : Replication
failed |
מציין שגיאת שכפול |
2019-01-21 17:59:00,246 org:test env:qa target:
action:SYNC context-id: mode: Apigee-Timer-1 INFO CONFIG-CHANGE -
SyncContext.syncUpStream() : Upstream sync finished in 4
seconds |
מציין את סוף מחזור הסנכרון ומספק גם את הזמן שנדרש לסנכרון |
2019-01-21 18:00:00,249 org:test env:dev target:
action:SYNC context-id: mode: Apigee-Timer-1 INFO CONFIG-CHANGE -
ManagementServerBasedReplicationContext.getContract() :
Upstream contract
poll returned 304 |
מציין שלא היה חוזה חדש יותר זמין |
2019-01-21 18:21:39,128 org:test env:qa target:
action:SYNC context-id: mode: Apigee-Timer-1 ERROR CONFIG-CHANGE -
ManagementServerBasedReplicationContext.getContract() :
Upstream contract
poll returned error 0 |
מציין שלא הייתה אפשרות להגיע למישור הניהול |
2019-01-21 18:21:39,128 org:test env:qa target:
action:SYNC context-id: mode: Apigee-Timer-1 ERROR CONFIG-CHANGE -
ManagementServerBasedReplicationContext.getContract() :
Upstream contract
poll returned error 404 |
מציין שמישור הניהול החזיר תגובת 404 לגבי החוזה |
2019-01-21 18:22:39,217 org:test1 env:dev target:
action:SYNC context-id: mode: Apigee-Timer-2 ERROR CONFIG-CHANGE -
ManagementServerBasedReplicationContext.getContract() :
Upstream contract
poll returned error 403 |
מציין שהסביבה שנבדקת לא מוגדרת כסביבה היברידית |
2019-01-21 18:22:39,217 org:test1 env:dev target:
action:SYNC context-id: mode: Apigee-Timer-2 ERROR CONFIG-CHANGE -
ManagementServerBasedReplicationContext.getContract() :
Upstream contract
poll returned error 401 |
יש כמה בעיות בפרטי הכניסה שסיפקת |
פתרון בעיות
יומנים הם דרך טובה לפתור בעיות בהתקנה. פרטים נוספים זמינים במאמר בנושא רישום ביומן.
הסנכרון לא מתחיל
בהמשך מוסבר על כמה שגיאות ואיך לפתור אותן. כל אחת מהודעות השגיאה האלה מתחילה ב-ErrorCode מסוג sync.xxxxx. בהמשך מפורטים קודי שגיאה אפשריים
sync.NullOrEmptyConfig
הודעה: config ריק או null שסופק דרך com.apigee.sync.config
הסיבה: הודעת השגיאה הזו תוצג אם מאפייני ההגדרה של הכלי לסנכרון לא סופקו בצורה תקינה.
פתרון: מוודאים שכל מאפייני ההגדרה מלאים בערכים המתאימים.
sync.ConfigFileNotFound
הסיבה: הכלי לסנכרון הוגדר לקרוא את מאפייני ההגדרה שלו מקובץ, אבל לא הייתה אפשרות לטעון את הקובץ
פתרון: מוודאים שהקובץ זמין ושאפשר לגשת אליו במהלך הפעלת הכלי לסנכרון
sync.IncorrectSettings
סיבה: חסרים מאפייני הגדרה נדרשים בהגדרת הכלי לסנכרון, או שהערכים שלהם לא נמצאים בטווח הצפוי. השגיאה אמורה לכלול פרטים נוספים על הנכס הספציפי שגורם לבעיה. השגיאות האלה מוטמעות בניתוח כדי לוודא ששגיאות בהגדרות יאותרו עוד לפני שהשירות מתחיל לפעול.
בטבלה הבאה מפורטות כמה שגיאות אפשריות של IncorrectSettings:
| שגיאה | מה הבעיה |
|---|---|
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/controlPlane/retries numeric
instance is greater than the required maximum (maximum: 3, found:
20) |
הערך שסופק לשדה retries בקטע controlPlane חורג מהערך המותר |
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/controlPlane/connectionTimeout
numeric instance is lower than the required minimum (minimum: 10,
found: 1) |
הערך שסופק לשדה connectionTimeout בקטע controlPlane נמוך מהערך המותר |
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/controlPlane object has
missing required properties
([\"contractProvider\"]) |
בקטע controlPlane חסר שדה החובה contractProvider |
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/controlPlane/contractProvider
string \"http://\\uapi.apigee.com\" is not a valid
URI |
כתובת ה-URI של ספק החוזה לא תקינה |
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/environments array is too
short: must have at least 1 elements but instance has 0
elements |
מערך הסביבות חייב לכלול לפחות סביבה אחת |
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/environments/0 object has
missing required properties
([\"environmentName\"]) |
בסביבה באינדקס 0 חסר שדה החובה environmentName |
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/environments/0 object has
missing required properties
([\"organizationName\"]) |
בסביבה באינדקס 0 חסר שדה החובה organizationName |
configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/environments/0/pollInterval
numeric instance is lower than the required minimum (minimum: 60,
found: 6) |
לסביבה באינדקס 0 יש מרווח בין סקרים שקטן מהמגבלה המותרת של 60 |
פתרון: צריך לתקן את ההגדרה כך שתכלול את הבלוק הנדרש
sync.ReplicationRootDoesNotExist
הסיבה: סופקה ל-Synchronizer נקודת שורש של שכפול שלא קיימת
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.ReadOnlyReplicationRoot
הסיבה: לסנכרון סופק שורש רפליקציה שאין לו הרשאות כתיבה
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.ReplicationRootNotADir
הסיבה: סופק לסנכרון שורש רפליקציה, שיכול להיות קובץ
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.InvalidControlPlaneURL
סיבה: סופקה ל-Synchronizer כתובת URL של הגדרה ריקה
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.InvalidControlPlaneSubscriptionURL
הסיבה: כתובת ה-URL של ההגדרה שסופקה לכלי הסנכרון ליצירת מינוי הייתה שגויה, לא מלאה או ריקה.
פתרון: צריך לתקן את כתובת ה-URL לכתובת URL תקינה של הגדרות ליצירת מינוי ל-pub/sub כדי לטפל באותות ממישור הבקרה.
sync.InvalidControlPlaneUnsubscriptionURL
הסיבה: כתובת ה-URL של ההגדרה למחיקת המינוי שסופקה ל-Synchronizer שגויה, לא מלאה או ריקה.
פתרון: צריך לתקן את כתובת ה-URL לכתובת URL תקינה של הגדרות למחיקת מינוי pub/sub כדי לטפל באותות ממישור הבקרה.
sync.CannotCreateEnvironmentFolder
הסיבה: הכלי לסנכרון ניסה ליצור תיקייה לשכפול סביבת QA, אבל לא הצליח ליצור את התיקייה הנדרשת.
פתרון: מוודאים שלשורש השכפול אין נתיב מתנגש עם אותו שם, שהוא קובץ לקריאה בלבד
sync.DuplicateEnvironmentEntries
הסיבה: אותו סביבה נוספה כמה פעמים בהגדרה.
פתרון: אפשר לציין כל סביבה רק פעם אחת.
sync.DiskExceedsAllowedCapacity
הסיבה: נפח האחסון בדיסק שהוזן כבר הגיע לקיבולת הסף שצוינה באמצעות מאפייני ההגדרה.
פתרון: מוודאים שיש מספיק מקום בדיסק או בודקים אם אפשר לשנות את הגדרות האחסון כדי לפנות יותר מקום בדיסק.
sync.OwnershipClaimFailed
הסיבה: הכלי לסנכרון ניסה לתבוע בעלות על תיקיית הסביבה, אבל נכשל
פתרון: כל כלי סנכרון ינסה קודם לוודא שהוא הכותב היחיד במערכת הקבצים. השגיאה מציינת את הנתיב ואת הסיבה לכשל. טיפול בשורש הבעיה
שגיאות של כלי הסנכרון במהלך זמן הריצה
יכולות להתרחש השגיאות הבאות של הכלי לסנכרון במהלך זמן הריצה.
sync.replicators.PollReturnedError
ההודעה המשויכת תכלול את הסטטוס של השרת הקודם. בהמשך מפורטים סטטוסי השגיאה
status 0
הסיבה: מציינת בעיה בקישוריות. לא הייתה גישה למישור הניהול
פתרון: מוודאים שפרטי מישור הניהול נכונים ושאפשר להגיע אל contracts API.
status 404
הסיבה: סביר להניח ששם הארגון או הסביבה לא נמצא בשרת
פתרון: מוודאים שפרטי מישור הניהול נכונים ושאפשר להגיע אל contracts API.
סטטוס 401
הסיבה: סביר להניח שלפרטי הכניסה שסופקו אין הרשאות מנהל חשבון ארגוני.
פתרון: מוודאים שהפרטים של מישור הניהול נכונים ושיש גישה אל Contracts API.
status 403
הסיבה: מציין שהסביבה שנבדקת לא מוגדרת כסביבה היברידית
פתרון: מוודאים שהארגון כולל את הדגל הנדרש features.hybrid.enabled=true
sync.OwnershipClaimedByOther
הסיבה: במהלך הפעולה, הכלי לסנכרון מצא שמופעלת גישה לקובץ הבסיס על ידי מופע אחר של הכלי לסנכרון. (זה יכול לקרות כשמערכת קבצים משותפת בין כלי סנכרון).
פתרון: צריך לטפל בבעיה הבסיסית כדי לוודא ששני מופעים של Synchronizer לא משתפים את אותה מערכת קבצים. הכלי לסנכרון יסמן את עצמו כלא זמין ולא ניתן יהיה לשחזר אותו. בנוסף, הוא יוודא שהמסנכרן השני שניגש לאותו קובץ שורש יקבל על כך הודעה דרך קובצי הבעלות שלו.
sync.DiskExceedsAllowedCapacity
הסיבה: במהלך הפעולה, Synchronizer הבין שהשימוש בדיסק חרג מהמגבלה המותרת.
פתרון: בשלב הזה, הכלי לסנכרון יבטל את כל ההורדות וינסה לבצע פעולת ניקוי של קובץ לא פעיל. עם זאת, יכול להיות שהבעיה תחזור על עצמה, והדרך היחידה לפתור אותה באופן מלא היא לוודא שיש מספיק זיכרון בדיסק של הכלי לסנכרון כדי שהוא יוכל לפעול.
אבחון של כשלים בהורדת חוזים
אם מופיעה הודעת השגיאה 'upstream contract poll', נסו להתקשר אל Contract API ולבדוק את הפרטים, כאשר שם המשתמש הוא שם המשתמש שלכם ב-Apigee (כתובת האימייל שלכם). החוזה מייצג את כל אוסף הנתונים שהכלי לסנכרון מוריד ממישור הניהול.
אין מיקום נתונים
curl https://apigee.googleapis.com/v1/organizations/org/environments/env/contracts/1.0 -u username
המיקום של נתונים
curl https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/org/environments/env/contracts/1.0 -u username