יומני סנכרון

יומנים הם דרך טובה לפתרון בעיות בהתקנה של 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