如果已設定多個軸群組,則不會顯示自訂維度

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

問題

使用統計資料收集器政策建立的自訂變數不會顯示在 Edge UI 的 Analytics (分析) 自訂報表的「自訂維度」下方。

錯誤訊息

針對缺少路徑的每個機構/環境組合重新啟動後,S 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 時,無法建立自訂維度。 邊緣私有雲使用者

原因:機構和環境組合缺少 ZooKeeper 屬性路徑

診斷

透過 啟用 Analytics (分析) API,為機構環境組合啟用 Analytics (分析),該 API 會填入 ZooKeeper 樹狀結構中的 /organizations//environments//properties。當這個 API 失敗時,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

之所以發生這種情況,通常是因為有多個分析群組使用相同的 Postgres-伺服器 UUID。如要查看存在的數據分析群組數量,請執行以下 API 呼叫:

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

如果這個 API 傳回多個群組,很可能是問題原因。在以下範例中,您會發現兩個群組存在,且只用連字號區分:axgroup-001axgroup001

[ {
  "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" : {
  }

具體來說,如果每個 axgroup 的 postgres-server UUID 都相同,就會導致這個問題。一個快速確認方式是執行以下指令:

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

下列範例輸出會快速比較 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 伺服器指派給兩個 axgroups。最快解決方式,就是從一個 axgroup 刪除 postgres 伺服器資訊,並將所有範圍 (機構、環境組合) 指派給另一個群組。步驟如下:

  1. 按照 在數據分析群組中新增及刪除數據分析元件的操作說明,將 postgres 伺服器元件從兩個軸群組中移除。如果只有非實際工作環境範圍出現問題,請選擇「不」有任何實際工作環境範圍的 axgroup。否則,請選擇範圍數量最少的 axgroup。
  2. 從已沒有任何 Postgres 伺服器的 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. 透過 啟用 Analytics API 啟用數據分析。
  4. 使用下列指令,重新啟動 postgres 主要節點上的 Edge-postgres-server 元件,以及可能已安裝的所有 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 UI 中是否顯示自訂維度。

如果問題仍未解決,請參閱「必須收集診斷資訊」一節。

收集診斷資訊的必要性

如果按照先前的指示操作後仍無法解決問題,請收集下列診斷資訊。請與 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