Layer 7 API Gateway: ポリシーのデバッグ
search cancel

Layer 7 API Gateway: ポリシーのデバッグ

book

Article ID: 279750

calendar_today

Updated On:

Products

CA API Gateway

Issue/Introduction

ポリシーのデバッグは難しい場合があります。有用なツールとして ポリシーデバッガーデバッグポリシー がありますが、実際にはそのままでは意味のある出力が生成されないことがあります。この記事では、Policy Manager を使用してポリシーのデバッグを始めるためのヒントをご紹介します。 

Environment

All

Resolution

以下の手順に従います。

  1. 対象のサービス(ポリシー)に Audit Messages in Policy アサーションを配置し 、リクエスト(request)と応答(response)を常にキャプチャするためどちらも Always に設定します。
  2. サービスを右クリックします
  3. Service Properties を選択し、[Enable policy debug tracing] を選択して、OK を選択します。
  4. 表示されるダイアログ "Do you want to edit the debug trace policy now?" で Yes を選択します。
  5. 表示されたポリシーで、5 行目の Audit Messages in Policy アサーションを削除(または無効化)します。
  6. 次に、Add Audit Details アサーションを選択して、以下の作業を実施します。

何も変更していない状態では、Add Audit Details アサーションには以下のような内容が含まれます。

TRACE: service.name=${trace.service.name} policy.name=${trace.policy.name} policy.guid=${trace.policy.guid} assertion.number=${trace.assertion.numberstr} assertion.shortname=${trace.assertion.shortname} status=${trace.status}


ご覧のとおり、"service.name", ... "policy.guid", ... などの文字列が含まれておりラベルとして使用されます。これらは説明的な情報ですが、監査結果が読みにくくなります。最後の trace.status は最も重要な情報である可能性があります。出力の例を次に示します。

もっとも関心があるのは、エラー コード (trace.status) とポリシー行番号 (trace.assertion.numberstr) です。しかし、これらはログ監査メッセージの後半に出力されすぐには判別しづらい状態です。

よりシンプルで有益な Audit Detail ログの設定:

一例として次のメッセージを使用して Audit Detail アサーションの内容を置き換えることにより、このメッセージをより判別しやすいものに変更します。

TRACE: [${trace.status}][${trace.assertion.numberstr}][${trace.assertion.shortname}][${trace.policy.name}]

 

この例では、すべてのラベルを削除し、重要な情報を行の先頭に移動し、4つの変数を [...] 括弧の中に入れました。それぞれ以下の情報が含まれます。

  • 1番目: [${trace.status}] - アサーションがエラーなしで実行された場合は '0'、エラーが発生した場合は > 0。ポリシーによっては、比較などのアサーションが失敗することが予想されます。
  • 2番目: [${trace.assertion.numberstr}] - アサーションの行番号。どの行が実行されたかを正確に示します。
    例えば [3.45] のような内容が表示されている場合は、次のように読み替えてください:サービスの 3 行目はフラグメント(またはカプセル化されたアサーション)です。そのフラグメント(またはカプセル化されたアサーション)内で、ポリシーは 45 行目で失敗しました。
    カプセル化されたアサーションの行番号が表示されない場合は、カプセル化されたアサーションの設定を開き、[Allow debug tracing into backing policy] を有効にします。
  • 3番目: [${trace.assertion.shortname}] - アサーション名
  • 4番目: [${trace.policy.name}] - ポリシー名

新しい出力は次のようになります。

Additional Information

弊社では、実稼働環境では監査を有効にしないことをお勧めします。実稼働環境で監査を維持する必要がある場合は、Gateway サーバーの内部で監査を行わず、外部 DB、ファイル システム、またはリモート Syslog サーバーに監査を中継することをお勧めします。実稼働環境で監査を有効にする必要がある場合は、慎重に実行し、必要がなくなったら変更を元に戻してください。監査ログをオンのままにすると、データベースがいっぱいになり、使用環境がダウンする可能性があります。弊社は 監査レコードの管理スクリプト の使用も推奨します。

[英文文書] Layer 7 API Gateway: Debugging in policy