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

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

תיאור הבעיה

המשתנה המותאם אישית שנוצר באמצעות אוסף נתונים סטטיסטיים לא מופיעה בקטע 'מאפיינים מותאמים אישית' בדוחות המותאמים אישית של Analytics בקטע ממשק משתמש של 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

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

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

הסיבה: נתיב המאפיינים של ZoKeeper חסר בשילוב של הארגון והסביבה

אבחון

Analytics מופעל עבור שילוב של ארגון וסביבה באמצעות הפעלת Analytics API, שמאכלס את /organizations//environments//properties בעץ של גן החיות. כשה-API הזה נכשל, הרכיב end-postgres-server לא יכול ליצור מאפיינים מותאמים אישית, והשגיאה הבאה תופיע ב-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 של שרת הדואר הנכנס מוגדר ה-axgroup זהה. דרך מהירה לבדוק זאת היא להריץ את הפקודה הבאה:

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

בפלט לדוגמה הבא מוצגת השוואה מהירה בין מזהי ה-UUID של השרתים הבאים כדי לקבוע הם זהים:

{  "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 לשתי קבוצות x. הדרך המהירה ביותר לפתרון היא למחוק את פרטי שרת ה-Postgres מקבוצת אקספרס אחת ולהקצות את כל ההיקפים (ארגון, שילובים של סביבה) לקבוצה השנייה. כדי לעשות את זה, יש לבצע את השלבים הבאים:

  1. מסירים את רכיבי שרת ה-postgres מאחת משתי קבוצות ה-axgroups בעזרת ההוראות ב- הוספה ומחיקה של רכיבי ניתוח נתונים בקבוצות Analytics. אם נתקלים בבעיות רק בהיקפים שאינם בסביבת הייצור, כדאי לבחור את קבוצת ה-axgroup אין היקף ייצור לתרגיל הזה. אחרת, בוחרים את קבוצת ה-axgroup עם את המספר המינימלי של היקפים.
  2. מסירים את כל היקפי ההרשאות מקבוצת ה-axgroup שכבר לא מכילה שרתי Postgres, שלגביו רואים את הבעיה של המאפיין המותאם אישית מקבוצת ה-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. הפעלת ניתוח נתונים באמצעות מפעילים את analytics API.
  4. מפעילים מחדש את רכיב End-postgres-server בצומת המאסטר הפנימי, וכל רכיב קצה-qpid-server שייתכן שהתקנת, באמצעות הפקודות הבאות:
     /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. שרת קצה הפרסום /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. הפלט של עץ ZoomKeeper שהתקבל באמצעות הפקודה הבאה:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt