症状
アナリティクス ダッシュボード([Proxy Performance] や [Target Performance] など)で、Edge UI にデータが表示されません。すべてのダッシュボードに次のメッセージが表示されます。
No traffic in the selected date range
エラー メッセージ
この問題では、確認できるエラーは生成されません。
考えられる原因
次の表に、この問題の考えられる原因を記載します。
原因 | 対象 |
---|---|
組織環境向けの API トラフィックがない | Edge Private Cloud ユーザー |
データが Postgres データベースで利用可能であるが UI に表示されない | Edge Private Cloud ユーザー |
Analytics データが Postgres データベースにプッシュされない | Edge Private Cloud ユーザー |
Analytics のデプロイが正しくない | Private Cloud ユーザー |
Analytics サーバーの UUID が最新でない | Edge Private Cloud ユーザー |
組織環境向けの API トラフィックがない
診断
- 次のいずれかの方法を使用して、アナリティクス データを表示しようとしている特定の期間において、特定の組織環境に API プロキシのトラフィックが存在するかどうかを確認します。
- ユーザーが現在使用している任意の API のトレースを有効にし、トレースでリクエストを取得できるかどうかを確認します。
- Nginx アクセスログ(
/opt/apigee/var/log/edge-router/nginx/logs/access.log)
を表示して、特定の期間において API プロキシの新しいエントリがあるかどうかを確認します。 - API プロキシから Syslog、Splunk、Loggly などのログサーバーに情報を記録する場合、特定の期間において、これらのログサーバーに API プロキシのエントリがあるかどうかを確認できます。
- 特定の期間にトラフィックがない(API リクエストがない)場合、アナリティクス データは利用できません。アナリティクス ダッシュボードに「No traffic in the selected date range」と表示されます。
解決策
- 特定の組織環境で 1 つ以上の API プロキシを呼び出します。
- 数秒待ってから、[Hour] タブでアナリティクス ダッシュボードを表示し、データが表示されるかどうかを確認します。
- 問題が解決しない場合は、データが Postgres データベースで利用可能であるが UI に表示されないに進みます。
データが Postgres データベースで利用可能であるが UI に表示されない
症状
まず、Postgres データベース内の最新の Analytics データが利用可能かどうかを確認します。
Postgres マスターノードで最新の Analytics データが利用可能かどうかを確認するには:
- 各 Postgres サーバーにログインし、次のコマンドを実行して、Postgres マスターノードにいるかどうかを検証します。
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
- Postgres マスターノードで、PostgresSQL にログインします。
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- Postgres データベースで次の SQL クエリを使用して、org-env のテーブルが存在するかどうかを確認します。
\d analytics."orgname.envname.fact"
- 次の SQL クエリを使用して、Postgres データベースで最新のデータが利用できるかどうかを確認します。
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- 最新のタイムスタンプが非常に古い場合(または null の場合)、Postgres データベースでデータが利用できないことを示します。この問題の原因としては、データが Qpid サーバーから Postgres データベースにプッシュされないことが考えられます。Analytics データが Postgres データベースにプッシュされないに進みます。
- 最新のデータが Postgres データベースのマスターノードで利用可能な場合は、以下の手順に従って、データが Edge UI に表示されない理由を診断します。
診断
- Chrome ブラウザでデベロッパー ツールを有効にし、次の手順に従ってアナリティクス ダッシュボードのいずれかから使用される API を取得します。
- デベロッパー ツールから [Network] タブを選択します。
- 記録を開始します。
- Analytics ダッシュボードを再読み込みします。
- デベロッパー ツールの左側のパネルで、次の文字列を含む行を選択します。apiproxy?_optimized...
- デベロッパー ツールの右側のパネルで、[Headers] タブを選択して、[Request URL] に注目します。
- 以下にデベロッパー ツールの出力例を示します。
[Proxy Performance] ダッシュボードで使用される API を示す出力例([Proxy Performance] ダッシュボードのデベロッパー ツールの [Network] タブ)
- 管理 API 呼び出しを直接実行し、結果が得られるかどうかを確認します。以下に、[Proxy Performance] ダッシュボードの [Day] タブの API 呼び出しの例を示します。
curl -u username:password "http://management_server_IP_address:8080/v1/organizations/ org_name/environments/env_name/stats/apiproxy?limit=14400& select=sum(message_count),sum(is_error),avg(total_response_time), avg(target_response_time)&sort=DESC&sortby=sum(message_count),sum(is_error), avg(total_response_time),avg(target_response_time)&timeRange=08%2F9%2F2017+ 18:00:00~08%2F10%2F2017+18:00:00&timeUnit=hour&tsAscending=true"
- 正常なレスポンスが表示されるがデータがない場合は、ネットワーク接続の問題により、管理サーバーが Postgres サーバーからデータを取得できないことを示します。
- 管理サーバーから Postgres サーバーに接続できるかどうか確認します。
telnet Postgres_server_IP_address 5432
- Postgres サーバーに接続できない場合は、ポート 5432 にファイアウォールの制限があるかどうかを確認します。
- ファイアウォールの制限がある場合、それが管理サーバーが Postgres サーバーからデータを pull できない原因である可能性があります。
解決策
- ファイアウォールの制限がある場合は、それらを削除して、管理サーバーが Postgres サーバーと通信できるようにします。
- ファイアウォールの制限がない場合、ネットワーク障害がこの問題の原因である可能性があります。
- 管理サーバーにネットワーク障害があった場合は、再起動すると問題が解決する可能性があります。
- 次のコマンドを使用して、すべての管理サーバーを 1 つずつ再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Edge UI にアナリティクス データが表示されるかどうかを確認します。
それでもデータが表示されない場合は、&123;&123;support}} にお問い合わせください。
Analytics データが Postgres データベースにプッシュされない
診断
データが Postgres データベースで利用可能であるが UI に表示されないで、データが Qpid サーバーから Postgres データベースにプッシュされないと判断した場合は、次の手順を実行します。
- 次のコマンドを実行して、各 Qpid サーバーが起動していることを確認します。
/opt/apigee/bin/apigee-service edge-qpid-server status
- Qpid サーバーが停止している場合は、再起動します。そうでない場合は、ステップ 5 にジャンプします。
/opt/apigee/bin/apigee-service edge-qpid-server restart
- しばらく待ってから、Postgres データベースで最新のデータが利用可能かどうかを再度確認します。
- PostgresSQL にログインします。
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- 次の SQL クエリを実行して、最新のデータが利用可能かどうかを確認します。
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- PostgresSQL にログインします。
- 最新のデータが利用可能な場合は、以下の手順をスキップし、「解決策」の最後のステップに進みます。最新のデータが利用できない場合は、次の手順に進みます。
- Qpid サーバーのキューからのメッセージが Postgres データベースにプッシュされているかどうかを確認します。
qpid-stat -q command
を実行し、msgIn と msgOut の列の値を確認します。- 次に、msgIn と msgOut が等しくないことを示す出力例を示します。これは、メッセージが Qpid サーバーから Postgres データベースにプッシュされていないことを示します。
- msgIn と msgOut の列に不一致がある場合は、Qpid サーバーのログ
/opt/apigee/var/log/edge-qpid-server/system.log
をチェックし、エラーがないかどうかを確認します。 - 次の図に示すように、「Probably PG is still down」や「FATAL: sorry, too many clients already」などのエラー メッセージが表示されることがあります。
2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: FATAL: sorry, too many clients already 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: sorry, too many clients already)
これは、Postgres サーバーが実行している SQL クエリが多すぎるか、CPU の稼働率が高いため、Qpid サーバーに応答できない場合に発生する可能性があります。
解決策
- Postgres サーバーと PostgreSQL を以下のように再起動します。
/opt/apigee/bin/apigee-service edge-postgres-server restart
/opt/apigee/bin/apigee-service apigee-postgresql restart
- この再起動により、以前のすべての SQL クエリが停止し、Postgres データベースへの新しい接続が可能になります。
- Analytics ダッシュボードを再読み込みし、Analytics データが表示されているかどうかを確認します。
問題が解決しない場合は、&123;&123;support}} にお問い合わせください。
Analytics のデプロイが正しくない
診断
- 次の API 呼び出しを使用して、アナリティクスのデプロイのステータスを取得します。
curl -u user_email:password http://management_server_host:port /v1/organizations/orgname/environments/envname/provisioning/axstatus
- API 呼び出しの結果から、Qpid サーバーと Postgres サーバーのステータスを確認します。
- Qpid サーバーと Postgres サーバーのステータスが「SUCCESS」と表示されている場合は、分析サーバーが適切に接続されていることを示します。Analytics サーバーの UUID が最新でないに進みます。
- Qpid サーバーまたは Postgres サーバーのステータスが「UNKNOWN」または「FAILURE」と表示されている場合は、対応するサーバーに問題があることを示します。
たとえば、次のシナリオでは、Postgres サーバーのステータスが「UNKNOWN」として表示されます。
これは、アナリティクスのオンボーディング中に障害が発生した場合に発生する可能性があります。この障害により、管理サーバーからのメッセージが Postgres サーバーに届かなくなります。
解決策
この問題は、通常、「FAILURE」または「UNKNOWN」が示されたサーバーを再起動することで解決できます。
- 次のコマンドを使用して、アナリティクスの接続ステータスが「FAILURE」または「UNKNOWN」と示された各サーバーを再起動します。
/opt/apigee/apigee-service/bin/apigee-service component restart
- 次に例を示します。
- Qpid サーバーについての問題が表示された場合は、Qpid サーバーを再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
- Postgres サーバーについての問題が表示された場合は、マスターとスレーブの両方の Postgres サーバーノードを再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- Qpid サーバーについての問題が表示された場合は、Qpid サーバーを再起動します。
- 上記の例では、Postgres サーバーに対して「UNKNOWN」のメッセージが表示されているため、マスターとスレーブの両方の Postgres サーバーを再起動する必要があります。
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
Analytics サーバーの UUID が最新でない
診断
- 次の API 呼び出しを使用してアナリティクス構成を取得します。
curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax
上記の API の出力例を次に示します。
[ { "name" : "axgroup001", "properties" : { "consumer-type" : "ax" }, "scopes" : [ "myorg~prod", "myorg~test" ], "uuids" : { "aries-datastore" : [ ], "postgres-server" : [ "6777...2db14" ], "dw-server" : [ ], "qpid-server" : [ "774e...fb23", "29f3...8c11" ] }, "consumer-groups" : [ { "name" : "consumer-group-001", "consumers" : [ "774e...8c11" ], "datastores" : [ "6777...db14" ], "properties" : { } } ], "data-processors" : { } } ]
- 出力の次の情報が正しいことを確認します。
- "scope" 要素にリストされた org-env の名前。
- Postgres サーバーと Qpid サーバーの UUID。
- 各 PostgreSQL サーバーノードで次のコマンドを実行して、Postgres サーバーの UUID を取得します。
curl 0:8084/v1/servers/self/uuid
- 各 Qpid サーバーノードで次のコマンドを実行して、Qpid サーバーの UUID を取得します。
curl 0:8083/v1/servers/self/uuid
- 各 PostgreSQL サーバーノードで次のコマンドを実行して、Postgres サーバーの UUID を取得します。
- すべての情報が正しい場合は、Analytics データが Postgres データベースにプッシュされないに進みます。
- Postgres サーバーまたは Qpid サーバーの UUID が正しくない場合は、管理サーバーが最新でない UUID を参照している可能性があります。
解決策
最新でない UUID を削除し、サーバーの正しい UUID を追加するには、Apigee サポートに連絡してください。