Wildflyでリクエストをダンプする

Webアプリのデバッグや障害対応等で、Webアプリに対するリクエストやレスポンスのHTTPヘッダや内容を確認したい場合がある。
次のような場面ではクライアント側での確認ができないため、今回のようにAPサーバ側でキャプチャを行う。

  • ブラウザからのアクセスを想定したWebアプリの場合、ブラウザの開発ツール(F12)で通信内容をキャプチャできるが、REST API等のブラウザを介さないようなWebアプリへのアクセスについては、別の方法が必要である。
  • Windowsの場合はnetshやWireshark、Linuxの場合はtcpdump等のツールを利用できるが、開発環境のようにWebサーバがローカルにある場合はループバックアダプタの通信内容をキャプチャする必要があるが、これは一般的に難しい。
  • SSL/TLSが使用されている場合は、暗号化を解除するためにキャプチャツールに秘密鍵を設定する必要があり難易度が高い。
  • 本番や検証環境の場合、APサーバのフロントにロードバランサやリバースプロキシが配置されてる多段構成になることが多い。ブラウザとロードバランサやリバースプロキシとの通信は、ブラウザの開発ツールでは確認できるが、ロードバランサやリバースプロキシとAPサーバ間の通信はキャプチャできない。

RequestDumper

Wildfly(undertow)には既定で、リクエストとレスポンスをダンプする機能が含まれている。
次のように設定を追加して、Wildflyを再起動すれば利用可能である。
※下記はWildfly13の例

ダンプの例

Webアプリにアクセスすると、次のようにリクエストとレスポンスのヘッダがログに出力されます。