Router で NGINX デバッグログを有効にする

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

Apigee の Router は、デフォルトでエラー メッセージのみをエラー ログファイルに記録するように構成されています。ただし、特定のエラーが発生した理由を特定するために、より詳細な情報を収集しなければならない状況は数多くあります。これを行う方法の 1 つは、デバッグモードで動作するように Router を構成することです。これにより、デバッグログを取得できます。これにより、エラーの詳細情報を取得して迅速に解決できます。

このドキュメントでは、特定の仮想ホストに対するリクエストについて、Apigee Edge の Router でデバッグログを有効にする方法について説明します。デバッグ ロギングを有効にすると、ノースバウンド(クライアント アプリケーションとルーターの間)で、不正なリクエスト、 400 Bad Request - SSL Certificate Error(不正なリクエスト - SSL 証明書エラー)などの問題が発生した場合に、より多くの情報をキャプチャできます。

始める前に

  • NGINX のエラーログとロギングレベルについて詳しくは、NGINX のエラーログのドキュメントをご覧ください。
  • デバッグ情報を収集する必要がある API リクエストの組織、環境、仮想ホストの名前を収集します。

Router で NGINX デバッグログを有効にする

このセクションでは、Edge Router でデバッグログを有効にする方法について説明します。

関連する仮想ホスト構成ファイルの特定

Router で関連する仮想ホスト構成ファイルを見つける手順は次のとおりです。

  1. デバッグする特定の API リクエストの組織名、環境名、仮想ホストがわかっている場合は、次のように仮想ホスト構成ファイルを決定します。
    1. /opt/nginx/conf.d/ ディレクトリに移動します。
    2. 次のコマンドを使用して、conf.d ディレクトリにあるファイル ORG_NAME_ENV_NAME_VIRTUALHOST.conf を検索します。
      ls -ltrh | grep "ORG_NAME_ENV_NAME_VIRTUALHOST_NAME"
      
  2. 組織名がわからない場合は、次のように、API リクエストで使用されているホスト エイリアス名を使用して、仮想ホスト構成ファイルを特定できます。

    /opt/nginx/conf.d/ ディレクトリに移動し、次のコマンドを使用してリクエストが行われた hostalias を検索します。

    ls -ltrh | grep -r 'HOST_ALIAS_NAME'
    

    出力例:

    ホスト エイリアス名を opdk.cert-test.com とします。ls -ltrh コマンドを実行すると、次のように出力が表示されます。

Router で特定の仮想ホストのデバッグ ロギングを有効にする

次の手順では、特定の仮想ホストの Apigee Router でデバッグログを有効にする方法について説明します。

  1. Router マシンでファイル /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf を開きます。次に例を示します。
    vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
    
  2. 次の行を変更します。
    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log error;
    

    から

    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log info;
    
  3. 変更を保存します。
  4. NGINX の再読み込みコマンドを実行します。次に例を示します。
    sudo /opt/nginx/scripts/apigee-nginx reload
    
  5. すると、次のファイルでデバッグログがキャプチャされます。
    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
    
  6. 複数の Router でデバッグログをキャプチャする場合は、各 Router で上記の手順を繰り返します。

デバッグ情報が NGINX エラーログファイルに記録されることを確認する

  1. クライアントが仮想ホストの構成に関連付けられたホスト エイリアスとポートで API リクエストを行うと、デバッグログが次のファイルにキャプチャされます。

    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log

  2. 次の例に示すように、API リクエストのデバッグ情報が表示されていることを確認します。

    デバッグ情報の例:

    2021/01/27 02:48:40 [warn] 27624#27624: *3777 a client request body is buffered to a temporary file /opt/apigee/var/log/edge-router/nginx/client_temp/0000000001, client: XX.XX.XX.XX, server: XX.XX.XX.XX, request: "POST /post-no-target HTTP/1.1", host: "XX.XX.XX.XX:443"
    

    上記の情報は、大きなペイロードを含む POST リクエストをクライアントが送信すると取得されます。このログは、デバッグ ロギングが有効な場合にのみ表示されます。

  3. 追加のデバッグ情報が表示されない場合は、 Router 上の特定の仮想ホストのデバッグ ロギングの有効化に記載されているすべての手順が正しく行われていることを確認します。失敗した手順がある場合は、すべての手順を正しくやり直してください。
  4. それでもデバッグ情報を取得できない場合は、Apigee Edge サポートにお問い合わせください。

Router 上の特定の仮想ホストのデバッグログを無効にする

このセクションでは、特定の仮想ホストの Router でデバッグログを無効にする方法について説明します。

  1. Router マシンで次のファイルをエディタで開きます。 /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf 例:
    vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
    
  2. 次の行を変更します。

    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log info;
    

    から

    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log error;
    
  3. 変更を保存します。
  4. NGINX の再読み込みコマンドを実行します。次に例を示します。
    /opt/nginx/scripts/apigee-nginx reload
    
  5. 次のファイルはエラーログのみをキャプチャします。
    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
    
  6. 複数の Router でデバッグログを停止する場合は、各 Router で上記の手順を繰り返します。

エラー情報のみが NGINX エラーログファイルに記録されることの確認

  1. 特定の仮想ホスト構成に関連付けられたホスト エイリアスとポートで API リクエストを実行するか、クライアントがリクエストを行うのを待ちます。
  2. 次のファイルを確認します。 /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
  3. エラー情報のみが表示され、リクエストのデバッグ情報がログに記録されていないことを確認します。
  4. それでも追加のデバッグ情報がログに記録されている場合は、 Router 上の特定の仮想ホストのデバッグログの無効化に記載された手順をすべて正しく実施していることを確認します。失敗した手順がある場合は、すべての手順を正しくやり直してください。
  5. それでもデバッグ情報を取得できない場合は、Apigee Edge サポートにお問い合わせください。