מאפיינים מותאמים אישית לא מופיעים כשמגדירים מספר קבוצות

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

תיאור הבעיה

המשתנה המותאם אישית שנוצר באמצעות המדיניות של Statistics Collector (אוסף הנתונים הסטטיסטיים) לא מוצג בקטע Custom Dimensions (מאפיינים מותאמים אישית) בדוחות המותאמים אישית של Analytics בממשק המשתמש של Edge.

הודעת שגיאה

ביומן המערכת של edge-postgres-server תופיע השגיאה הבאה לאחר הפעלה מחדש של כל שילוב של ארגון/סביבה שבו הנתיב חסר:

KeeperErrorCode = NoNode for
/organizations/<ORG>/environments/<ENV>/properties
2018-03-29 16:14:48,980 pool-10-thread-2 ERROR ZOOKEEPER -
ZooKeeperServiceImpl.getData() : Could not get data for path:
/organizations//environments//properties, reason:
KeeperErrorCode = NoNode for
/organizations//environments//properties

סיבות אפשריות

סיבה התיאור הוראות לפתרון בעיות הרלוונטיות
חסר נתיב למאפיינים של גן החיות בשילוב של ארגון וסביבה. אם הערך /organizations//environments//properties (נתיב של שמוצגים) ב-ZooKeeper חסר, אי אפשר ליצור מאפיינים מותאמים אישית. משתמשי ענן פרטי של Edge

הסיבה: נתיב הנכסים שלzoKeeper חסר בשילוב של ארגון וסביבה

אבחון

מערכת Analytics מופעלת בשילוב של סביבה ארגונית באמצעות Enable analytics API, שמאכלס את הערך /organizations//environments//properties בעץ שלzoKeeper. כש-API נכשל, רכיב שרת-הקצה-postgres לא יכול ליצור מאפיינים מותאמים אישית, והשגיאה הבאה תופיע ב-system.log שלו:

KeeperErrorCode = NoNode for
/organizations/example/environments/prod/properties
2018-03-29 16:14:48,980 pool-10-thread-2 ERROR ZOOKEEPER -
ZooKeeperServiceImpl.getData() : Could not get data for path:
/organizations/example/environments/prod/properties, reason:
KeeperErrorCode = NoNode for
/organizations/digi/environments/sandbox/properties

לרוב זה קורה כשארגון מסוים הפך לארגון בזמן שבו היו יותר מקבוצת ניתוח אחת שהשתמשה באותם מזהים ייחודיים אוניברסליים (UUID) של שרת-אחר. כדי לבדוק כמה קבוצות ניתוח נתונים קיימות, מריצים את הקריאה הבאה ל-API:

curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"

אם ה-API הזה מחזיר כמה קבוצות, סביר להניח שהוא הגורם לבעיה. בדוגמה הבאה, שימו לב שיש שתי קבוצות, שההבדל ביניהן הוא מקף בלבד: axgroup-001 ו-axgroup001

[ {
  "name" : "axgroup-001",
  "properties" : {
  },
  "scopes" : [ "VALIDATE~test" ],
  "uuids" : {
    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]
  },
  "consumer-groups" : [ {
    "name" : "consumer-group-001",
    "consumers" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "datastores" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],
    "properties" : {
    }
  } ],
  "data-processors" : {
  }
}, {
  "name" : "axgroup001",
  "properties" : {
  },
  "scopes" : [ "example~prod" ],
  "uuids" : {
    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]
  },
  "consumer-groups" : [ {
    "name" : "consumer-group-001",
    "consumers" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
    "datastores" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],
    "properties" : {
    }
  } ],
  "data-processors" : {
  }

באופן ספציפי, הבעיה נגרמת אם ה-UUID של שרת ה-postgres שמוגדר לכל axgroup זהה. דרך מהירה לקבוע זאת היא להריץ את הפקודה הבאה:

curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"|grep -B7 "postgres-server"

הפלט של הדוגמה הבאה משווה במהירות בין מזהים ייחודיים אוניברסליים (UUID) של שרת ה-Postgres כדי לקבוע שהם זהים:

{  "name" : "axgroup-001",  "properties" : {  },  "scopes" : [ "VALIDATE~test" ],
"uuids" : {    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]--
"name" : "axgroup001",  "properties" : {  },  "scopes" : [ "myorg~prod" ],
"uuids" : {    "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"aries-datastore" : [ ],    "postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],

רזולוציה

לא ניתן להקצות את אותה קבוצה של שרתי PostgreSQL לשתי קבוצות axgroups. הדרך המהירה ביותר לפתרון היא למחוק את פרטי השרת של Postgres מקבוצת ה-axgroup, ולהקצות את כל ההיקפים (שילובי ארגון, סביבה) לקבוצה השנייה. כדי לעשות זאת:

  1. מסירים את רכיבי שרת ה-postgres מאחת משתי קבוצות ה-Axgroups לפי ההוראות במאמר הוספה ומחיקה של רכיבי ניתוח נתונים בקבוצות ניתוח נתונים. אם נתקלת בבעיות רק בהיקפים שאינם בסביבת ייצור, יש לבחור את קבוצת ה-axgroup שאין לה היקף ייצור עבור התרגיל הזה. אחרת, יש לבחור בקבוצת ה-axgroup עם מספר ההיקפים הקטן ביותר.
  2. מסירים את כל ההיקפים מקבוצת ה-axgroup שאין בהם יותר שרתי פוסטר, ואת כל ההיקפים שבהם מופיעה הבעיה של המאפיין המותאם אישית מקבוצת ה-Axgroup שלהם. בהנחה שהשדה axgroup-001 מהדוגמה שלמעלה הוא הקבוצה שבה רוצים להשתמש, צריך להשתמש בקטע הבא כדי להסיר את ההיקף של הארגון myorg ושל הסביבה prod:
    curl -u username:password -X DELETE 'http://management-server-host:8080/v1/analytics/groups/ax/axgroup001/scopes?org=myorg&env=prod'
    
  3. מפעילים את ניתוח הנתונים באמצעות הפעלת ה-API של Analytics.
  4. מפעילים מחדש את רכיב השרת edge-postgres בצומת המאסטר של postgres, ואת כל רכיבי השרת edge-qpid שהתקנת באמצעות הפקודות הבאות:
     /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    
     /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    
  5. מוודאים שהשגיאה שצוינה בקטע הודעת שגיאה שלמעלה לא מתרחשת יותר בקובץ היומן של שרת Postgres /opt/apigee/var/log/edge-postgres-server/logs/system.log.
  6. בודקים אם המאפיינים המותאמים אישית מופיעים בממשק המשתמש של Edge.

אם הבעיה נמשכת, עוברים אל חובה לאסוף פרטי אבחון.

יש לאסוף פרטי אבחון

אם הבעיה נמשכת גם אחרי שביצעתם את ההוראות הקודמות, עליכם לאסוף את פרטי האבחון הבאים. אפשר לפנות לתמיכה של Apigee Edge ולשתף אותם:

  1. שרת הקצה-postgres /opt/apigee/var/log/edge-postgres-server/logs/system.log מרגע ההפעלה מחדש האחרונה.
  2. הפלט של הקריאה הבאה ל-Management API:
    curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"
    
  3. הפלט של עץ גן החיות (ZooKeeper) שמתקבל באמצעות הפקודה הבאה:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt