יומנים הם דרך טובה לפתרון בעיות בהתקנה של 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
הודעה: סופקה הגדרה ריקה או 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
הסיבה: סופקה למסנכרן ליבת שכפול שלא קיימת
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.ReadOnlyReplicationRoot
הסיבה: לסנכרון סופק שורש שכפול שאין לו הרשאות כתיבה
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.ReplicationRootNotADir
הסיבה: סופק לסנכרון שורש שכפול, שיכול להיות קובץ
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.InvalidControlPlaneURL
סיבה: סופקה ל-Synchronizer כתובת URL של הגדרה ריקה
פתרון: מוודאים שתיקיית הבסיס שצוינה קיימת ושיש לה הרשאות כתיבה
sync.InvalidControlPlaneSubscriptionURL
הסיבה: כתובת ה-URL של ההגדרה שסופקה לכלי הסנכרון ליצירת מינוי הייתה שגויה, לא מלאה או ריקה.
פתרון: צריך לתקן את כתובת ה-URL לכתובת URL תקינה של הגדרות ליצירת מינוי ל-pub/sub כדי לטפל באותות ממישור הבקרה.
sync.InvalidControlPlaneUnsubscriptionURL
הסיבה: סנכרון נכשל כי סופקה כתובת URL שגויה, לא מלאה או ריקה להגדרות של מחיקת מינוי.
פתרון: צריך לתקן את כתובת ה-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 זיהה שמתבצעת גישה לשורש הקובץ על ידי מופע אחר של הכלי Synchronizer. (זה יכול לקרות כשמערכת קבצים משותפת בין כמה מופעים של הכלי Synchronizer).
פתרון: צריך לטפל בבעיה הבסיסית כדי לוודא ששני מופעים של 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