عدم ظهور "المكوّنات المخصّصة" عند ضبط مجموعات عدّة

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X.
info

المشكلة

لا يظهر المتغيّر المخصّص الذي تم إنشاؤه باستخدام سياسة "جامع الإحصاءات" ضِمن "السمات المخصّصة" في "التقارير المخصّصة" في "إحصاءات Google" في واجهة مستخدم 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

الأسباب المحتمَلة

السبب الوصف تعليمات تحديد المشاكل وحلّها التي تنطبق على
مسار خصائص Zookeeper غير متوفّر لمجموعة المؤسسة والبيئة. عندما يكون مسار ZooKeeper‏ /organizations//environments//properties غير متوفّر، لا يمكن إنشاء سمات مخصّصة. مستخدِمو Edge Private Cloud

السبب: مسار خصائص ZooKeeper غير متوفّر لمجموعة المؤسسة والبيئة

التشخيص

يتم تفعيل "إحصاءات Google" لمجموعة من المؤسسة والبيئة من خلال Enable analytics API، الذي يملأ /organizations//environments//properties في شجرة ZooKeeper. عندما تفشل واجهة برمجة التطبيقات هذه، لا يمكن لمكوّن edge-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 نفسها لخادم postgres. لمعرفة عدد مجموعات الإحصاءات المتوفّرة، شغِّل طلب بيانات من واجهة برمجة التطبيقات التالي:

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

إذا عرضت واجهة برمجة التطبيقات هذه عدة مجموعات، فمن المرجّح أنّها سبب المشكلة. في المثال التالي، لاحظ أنّ هناك مجموعتَين، لا يختلفان إلا بشرطة واصلة: 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 من إحدى مجموعتَي axgroup باستخدام التعليمات الواردة في إضافة مكوّنات "إحصاءات Google" وحذفها في مجموعات "إحصاءات Google". إذا كنت تواجه مشاكل فقط في النطاقات غير الإنتاجية، فاختر مجموعة 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. فعِّل "إحصاءات Google" باستخدام Enable analytics API.
  4. أعِد تشغيل مكوّن edge-postgres-server على عقدة postgres الرئيسية، وجميع مكوّنات edge-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. ملف edge-postgres-server‏ /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