症状
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