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

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動します。
情報

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

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

始める前に

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

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

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

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

次の手順では、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 サポートにお問い合わせください。