יומני סנכרון

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