API リクエストが Edge UI でキャプチャされない

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

内容

次の図は、トレース セッションの開始時に Edge UI で API リクエストがキャプチャされないことを示しています。

エラー メッセージ

この問題が発生しても、Edge UI にエラー メッセージは表示されません。

考えられる原因

次の表に、Edge UI トレースで API リクエストのキャプチャに失敗した場合に考えられる原因を示します。

原因 説明 対象となるトラブルシューティング手順
Message Processor で処理されないリクエスト トレースをキャプチャするには、Edge のコンポーネントである Message Processor で API リクエストを処理する必要があります。API リクエストが Apigee Edge に到達できない場合、Edge へのエントリ ポイント(Router など)か、Message Processor で処理される前に障害が発生すると、トレースはキャプチャできません。 Edge Public Cloud ユーザーと Private Cloud ユーザー
分類ツリーで API プロキシが見つからない Apigee Message Processor は、「分類ツリー」というルーティング ルール定義を使用して、受信リクエストのホスト名、ベースパス、リビジョン、環境に基づいてリクエストをディスパッチします。なんらかの理由で、関連する API プロキシが分類ツリーから削除された場合、Trace トランザクションにデータが表示されないことがあります。 Edge Private Cloud ユーザー

原因: リクエストが Message Processor で処理されない

診断

Trace セッションで API リクエストをキャプチャするには、Edge のコンポーネントである Message Processor で API リクエストを処理する必要があります。Trace トランザクションで API リクエストがキャプチャされない場合は、いくつかの理由が考えられます。

たとえば、API リクエストが Apigee Edge に到達できない場合、Edge へのエントリ ポイント(そのトランザクションが Message Processor で処理される前に障害が発生すると、トレースはキャプチャできなくなります。これらの各シナリオについて、以下で詳しく説明します。

シナリオ 1: リクエストが Apigee Edge に到達できない

  • 原因

    このシナリオでは、DNS の解決またはネットワーク接続の問題が原因でエラーが発生している可能性があります。その場合、このコマンドを実行するとき、次のエラーが表示される場合があります。

    curl https://hostName:port/apiProxyBasePath/requestPath
    
    curl: (6) Could not resolve host: hostName
    
  • 解像度

    DNS 構成を確認するには、次のコマンドを使用します。

    dig hostName

    ネットワーク接続を確認するには、次のコマンドを使用します。

    telnet hostName port

シナリオ 2: Apigee Edge Router でリクエストが失敗する

  • 原因

    このシナリオでは、TLS/SSL handshake の失敗が原因でエラーが発生している可能性があります。その場合は、次のいずれかのエラーが表示されることがあります。

    Received fatal alert: handshake_failure
    
    HTTP/1.1 400 Bad Request
    

    SSL 証明書のエラーが表示される場合もあります。

  • 解像度

    これらの問題のトラブルシューティングと解決については、以下のハンドブックをご覧ください。

    TLS/SSL handshake の失敗

    400 Bad Request - SSL 証明書エラー

シナリオ 3: Message Processor でリクエストを処理できない

  • 原因

    このシナリオでは、Apigee Message Processor は、指定された仮想ホストとパスの API プロキシを検出できません。その結果、次のいずれかのエラーが表示されることがあります。

    HTTP/1.1 404 Not Found
    
    {
      "fault":{
        "faultstring":"Unable to identify proxy for host: default and url: \/apiProxyBasePath/requestPath",
        "detail":{
          "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"
        }
      }
    }
    
    
  • 解像度

    この問題のトラブルシューティングと解決については、ハンドブック「404 unavailable for proxy for host」を参照してください。

原因: 分類ツリーで API プロキシが見つからない

診断

Message Processor が分類ツリーで API プロキシを検出できない場合、そのプロキシに対する API リクエストは Edge UI の Trace セッションに表示されません。

これかどうかを判断する手順は次のとおりです。

  1. 各 Message Processor にログインし、次のコマンドを使用して、リクエストされた API の特定のリビジョンが Message Processor の関連する環境にデプロイされているかどうかを確認します。

    curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
    

    出力例:

    上記のコマンドは、デプロイされたリビジョンのリストを出力します。たとえば、リビジョン 12 がデプロイされている場合は、次の出力が表示されます。

    [ "12" ]
    

    断続的に HTTP 404 エラーが発生しない限り、特定のリビジョンがデプロイされていることはよくわかります。

  2. 分類ツリーを読み取り、次のコマンドを使用して API プロキシ名が存在するかどうかを確認します。

    curl -i http://localhost:8082/v1/classification/tree | grep apiName
    
  3. Message Processor ごとに手順 1 と 2 を繰り返します。指定した API プロキシ名がいずれかの Message Processor の分類ツリーにない場合は、以下の解決策に従ってください。

解決策

次の手順に沿って、この問題を解決してください。リクエストの負荷が高い状態で Message Processor が再起動し、サービスが停止するのを回避するために、必要な対策を講じてください。

  1. 分類ツリーに特定の API プロキシがない各 Message Processor ホストにログインし、次のコマンドを使用して Message Processor を再起動します。

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  2. 再起動したら、次のコマンドを使用して、再起動するまで待ちます。

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
    
  3. Message Processor の準備ができたら、次のコマンドを使用して API プロキシの可用性を確認します。

    curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
    

    出力例:

    上記のコマンドは、デプロイされたリビジョンのリストを出力します。たとえば、リビジョン 12 がデプロイされている場合は、次の出力が表示されます。

    [ "12" ]
    

    断続的に HTTP 404 エラーが発生しない限り、特定のリビジョンがデプロイされていることはよくわかります。

  4. 分類ツリーを読み取り、次のコマンドを使用して API プロキシ名が存在することを確認します。

    curl -i http://localhost:8082/v1/classification/tree | grep apiName
    

    問題が解決しない場合は、診断情報の収集が必要な場合に進みます。

診断情報の収集が必要

上記の手順を行っても問題が解決しない場合は、次の診断情報を収集して Apigee Edge サポートと共有してください。

診断情報のタイプ    コマンド
トレース セッション コマンドの出力
curl -v management-server-host:8080/v1/runtime/organizations/orgName/environments/envName/apis/apiProxyName/revisions/revisionNumber/debugsessions -u user
Management Server ログ
/opt/apigee/var/log/edge-management-server/logs/system.log
Message Processor のログ
/opt/apigee/var/log/edge-message-processor/logs/system.log
Management Server から Message Processor への telnet コマンドと netcat コマンドの出力
telnet MessageProcessor_IP 8082
nc -vz MessageProcessor_IP 8082
Message Processor で netstat コマンドの出力
netstat -an > netstat.txt
すべての Message Processor で特定の API プロキシに対してデプロイされた出力リスト リビジョン
curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
すべての Message Processor の分類ツリーの出力
curl -i http://localhost:8082/v1/classification/tree