アナリティクス ダッシュボードにデータが表示されない

症状

アナリティクス ダッシュボード([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 トラフィックがない

診断

  1. 次のいずれかの方法を使用して、アナリティクス データを表示しようとしている特定の期間において、特定の組織環境に API プロキシのトラフィックが存在するかどうかを確認します。
    1. ユーザーが現在使用している任意の API のトレースを有効にし、トレースでリクエストを取得できるかどうかを確認します。
    2. Nginx アクセスログ(/opt/apigee/var/log/edge-router/nginx/logs/access.log)を表示して、特定の期間において API プロキシの新しいエントリがあるかどうかを確認します。
    3. API プロキシから Syslog、Splunk、Loggly などのログサーバーに情報を記録する場合、特定の期間において、これらのログサーバーに API プロキシのエントリがあるかどうかを確認できます。
  2. 特定の期間にトラフィックがない(API リクエストがない)場合、アナリティクス データは利用できません。アナリティクス ダッシュボードに「No traffic in the selected date range」と表示されます。

解決策

  1. 特定の組織環境で 1 つ以上の API プロキシを呼び出します。
  2. 数秒待ってから、[Hour] タブでアナリティクス ダッシュボードを表示し、データが表示されるかどうかを確認します。
  3. 問題が解決しない場合は、データが Postgres データベースで利用可能であるが UI に表示されないに進みます。

データが Postgres データベースで利用可能であるが UI に表示されない

症状

まず、Postgres データベース内の最新の Analytics データが利用可能かどうかを確認します。

Postgres マスターノードで最新の Analytics データが利用可能かどうかを確認するには:

  1. 各 Postgres サーバーにログインし、次のコマンドを実行して、Postgres マスターノードにいるかどうかを検証します。
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
        
  2. Postgres マスターノードで、PostgresSQL にログインします。
        psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
        
  3. Postgres データベースで次の SQL クエリを使用して、org-env のテーブルが存在するかどうかを確認します。
        \d analytics."orgname.envname.fact"
        
  4. 次の SQL クエリを使用して、Postgres データベースで最新のデータが利用できるかどうかを確認します。
        select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
        
  5. 最新のタイムスタンプが非常に古い場合(または null の場合)、Postgres データベースでデータが利用できないことを示します。この問題の原因としては、データが Qpid サーバーから Postgres データベースにプッシュされないことが考えられます。Analytics データが Postgres データベースにプッシュされないに進みます。
  6. 最新のデータが Postgres データベースのマスターノードで利用可能な場合は、以下の手順に従って、データが Edge UI に表示されない理由を診断します。

診断

  1. Chrome ブラウザでデベロッパー ツールを有効にし、次の手順に従ってアナリティクス ダッシュボードのいずれかから使用される API を取得します。
    1. デベロッパー ツールから [Network] タブを選択します。
    2. 記録を開始します。
    3. Analytics ダッシュボードを再読み込みします。
    4. デベロッパー ツールの左側のパネルで、次の文字列を含む行を選択します。apiproxy?_optimized...
    5. デベロッパー ツールの右側のパネルで、[Headers] タブを選択して、[Request URL] に注目します。
  2. 以下にデベロッパー ツールの出力例を示します。

    [Proxy Performance] ダッシュボードで使用される API を示す出力例([Proxy Performance] ダッシュボードのデベロッパー ツールの [Network] タブ)

  3. 管理 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"
        
  4. 正常なレスポンスが表示されるがデータがない場合は、ネットワーク接続の問題により、管理サーバーが Postgres サーバーからデータを取得できないことを示します。
  5. 管理サーバーから Postgres サーバーに接続できるかどうか確認します。
        telnet Postgres_server_IP_address 5432
        
  6. Postgres サーバーに接続できない場合は、ポート 5432 にファイアウォールの制限があるかどうかを確認します。
  7. ファイアウォールの制限がある場合、それが管理サーバーが Postgres サーバーからデータを pull できない原因である可能性があります。

解決策

  1. ファイアウォールの制限がある場合は、それらを削除して、管理サーバーが Postgres サーバーと通信できるようにします。
  2. ファイアウォールの制限がない場合、ネットワーク障害がこの問題の原因である可能性があります。
  3. 管理サーバーにネットワーク障害があった場合は、再起動すると問題が解決する可能性があります。
  4. 次のコマンドを使用して、すべての管理サーバーを 1 つずつ再起動します。
        /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
        
  5. Edge UI にアナリティクス データが表示されるかどうかを確認します。

それでもデータが表示されない場合は、&123;&123;support}} にお問い合わせください。

Analytics データが Postgres データベースにプッシュされない

診断

データが Postgres データベースで利用可能であるが UI に表示されないで、データが Qpid サーバーから Postgres データベースにプッシュされないと判断した場合は、次の手順を実行します。

  1. 次のコマンドを実行して、各 Qpid サーバーが起動していることを確認します。
        /opt/apigee/bin/apigee-service edge-qpid-server status
        
  2. Qpid サーバーが停止している場合は、再起動します。そうでない場合は、ステップ 5 にジャンプします。
        /opt/apigee/bin/apigee-service edge-qpid-server restart
        
  3. しばらく待ってから、Postgres データベースで最新のデータが利用可能かどうかを再度確認します。
    1. PostgresSQL にログインします。
          psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
          
    2. 次の SQL クエリを実行して、最新のデータが利用可能かどうかを確認します。
          select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
          
  4. 最新のデータが利用可能な場合は、以下の手順をスキップし、「解決策」の最後のステップに進みます。最新のデータが利用できない場合は、次の手順に進みます。
  5. Qpid サーバーのキューからのメッセージが Postgres データベースにプッシュされているかどうかを確認します。
    1. qpid-stat -q command を実行し、msgIn と msgOut の列の値を確認します。
    2. 次に、msgIn と msgOut が等しくないことを示す出力例を示します。これは、メッセージが Qpid サーバーから Postgres データベースにプッシュされていないことを示します。

  6. msgIn と msgOut の列に不一致がある場合は、Qpid サーバーのログ /opt/apigee/var/log/edge-qpid-server/system.log をチェックし、エラーがないかどうかを確認します。
  7. 次の図に示すように、「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 サーバーに応答できない場合に発生する可能性があります。

解決策

  1. Postgres サーバーと PostgreSQL を以下のように再起動します。
        /opt/apigee/bin/apigee-service edge-postgres-server restart
        
        /opt/apigee/bin/apigee-service apigee-postgresql restart
        
  2. この再起動により、以前のすべての SQL クエリが停止し、Postgres データベースへの新しい接続が可能になります。
  3. Analytics ダッシュボードを再読み込みし、Analytics データが表示されているかどうかを確認します。

問題が解決しない場合は、&123;&123;support}} にお問い合わせください。

Analytics のデプロイが正しくない

診断

  1. 次の API 呼び出しを使用して、アナリティクスのデプロイのステータスを取得します。
        curl -u user_email:password http://management_server_host:port
        /v1/organizations/orgname/environments/envname/provisioning/axstatus
        
  2. API 呼び出しの結果から、Qpid サーバーと Postgres サーバーのステータスを確認します。
    1. Qpid サーバーと Postgres サーバーのステータスが「SUCCESS」と表示されている場合は、分析サーバーが適切に接続されていることを示します。Analytics サーバーの UUID が最新でないに進みます。
    2. Qpid サーバーまたは Postgres サーバーのステータスが「UNKNOWN」または「FAILURE」と表示されている場合は、対応するサーバーに問題があることを示します。

      たとえば、次のシナリオでは、Postgres サーバーのステータスが「UNKNOWN」として表示されます。

      これは、アナリティクスのオンボーディング中に障害が発生した場合に発生する可能性があります。この障害により、管理サーバーからのメッセージが Postgres サーバーに届かなくなります。

解決策

この問題は、通常、「FAILURE」または「UNKNOWN」が示されたサーバーを再起動することで解決できます。

  1. 次のコマンドを使用して、アナリティクスの接続ステータスが「FAILURE」または「UNKNOWN」と示された各サーバーを再起動します。
        /opt/apigee/apigee-service/bin/apigee-service component restart
        
  2. 次に例を示します。
    1. Qpid サーバーについての問題が表示された場合は、Qpid サーバーを再起動します。
          /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
          
    2. Postgres サーバーについての問題が表示された場合は、マスターとスレーブの両方の Postgres サーバーノードを再起動します。
          /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
          
  3. 上記の例では、Postgres サーバーに対して「UNKNOWN」のメッセージが表示されているため、マスターとスレーブの両方の Postgres サーバーを再起動する必要があります。
        /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
        

Analytics サーバーの UUID が最新でない

診断

  1. 次の 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" : {
          }
        } ]
        
  2. 出力の次の情報が正しいことを確認します。
    1. "scope" 要素にリストされた org-env の名前。
    2. Postgres サーバーと Qpid サーバーの UUID。
      • 各 PostgreSQL サーバーノードで次のコマンドを実行して、Postgres サーバーの UUID を取得します。
            curl 0:8084/v1/servers/self/uuid
            
      • 各 Qpid サーバーノードで次のコマンドを実行して、Qpid サーバーの UUID を取得します。
            curl 0:8083/v1/servers/self/uuid
            
  3. すべての情報が正しい場合は、Analytics データが Postgres データベースにプッシュされないに進みます。
  4. Postgres サーバーまたは Qpid サーバーの UUID が正しくない場合は、管理サーバーが最新でない UUID を参照している可能性があります。

解決策

最新でない UUID を削除し、サーバーの正しい UUID を追加するには、Apigee サポートに連絡してください。