症状
Edge UI で、Statistics Collector ポリシーで作成したカスタム変数が、[Analytics Custom Reports] の [Custom Dimensions] に表示されません。
エラー メッセージ
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 の properties のパスが、組織と環境の組に対して存在しない | ZooKeeper のパス /organizations/ が存在せず、カスタム ディメンションが作成できない |
Edge Private Cloud のお客様 |
原因: ZooKeeper の properties のパスが、組織と環境の組に対して存在しない
診断
API の呼び出しによって、組織と環境の組に対する Analytics が有効になり、/organizations/
が ZooKeeper のツリーに設定されます。この 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-server UUID を使う Analytics グループが複数あるところに、組織がオンボーディングされるとき発生します。Analytics グループの数を確認するには、次の API を呼び出します。
curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"
この API が複数のグループを返す場合、ほとんどの場合、これが問題の原因だと考えられます。次の例では、ハイフンの有無に違いがあるだけの 2 つのグループ 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" : { }
具体的には、それぞれの 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 サーバー群を 2 つの axgroups に割り当てることはできません。最も簡単な解決方法は、一方の axgroup から postgres サーバーの情報を削除し、もう一方のグループにすべてのスコープ(組織と環境の組)を割り当てることです。そのための手順は次のとおりです。
- Analytics グループ内の Analytics コンポーネントの追加と削除の手順に従って、2 つの axgroup のうちの 1 つから postgres サーバーのコンポーネントを削除します。本番環境用以外のスコープにだけ問題がある場合、この手順では、本番環境用のスコープを持たない axgroup を選択します。それ以外の場合には、スコープ数が最も少ない axgroup を選択します。
- 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'
- 手順に従って、環境の Analytics を有効にします。
- 次のコマンドで、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
- 上のエラー メッセージのセクションで記録されていたエラーが、Postgres サーバーのログファイル
/opt/apigee/var/log/edge-postgres-server/logs/system.log
に記録されていないことを確認します。 - Edge UI にカスタム ディメンションが表示されていることを確認します。
問題が解決しない場合は、診断情報の収集が必要な場合へ進みます。
診断情報の収集が必要な場合
上記の手順でも問題が解決されない場合は、次の診断情報を収集する必要があります。Apigee サポートに連絡して、収集した情報を提供してください。
- edge-postgres-server の最後の再起動以降に関する
/opt/apigee/var/log/edge-postgres-server/logs/system.log
- 次のコマンドで管理 API を呼び出したときの出力
curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"
- 次のコマンドで取得した ZooKeeper ツリーの出力
/opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt