web-dev-qa-db-ja.com

Apache httpdで遅いリクエストのみを記録する方法

Apache httpd access_logで条件を指定して、処理に500ミリ秒以上かかったリクエストのみを保持する方法はありますか?

3
Antonio

CustomLog ディレクティブを使用すると、要求がログに記録されるタイミングを制御するために使用されるcondition(オプションの3番目の引数)を設定できます。 (Apache 2.4+では、これは Apache Expression の形式をとることができます。)ただし、このconditionは通常、リクエストのプロパティ(ファイルresponseに関連付けられているものではなく、タイプ、リクエストヘッダーなど)。 (HTTPresponseステータスに基づいて条件を作成することは可能に思えますが、これは REQUEST_STATUSサーバー変数 =。)

ただし、server response timeに基づいてconditonを作成する方法がわかりません。 (?)

回避策としては、カスタムログ形式のフォーマット文字列%msT(特にミリ秒として記録する場合)を使用して、この情報をアクセスログに明確に含めることができます。その後、ログファイルアナライザーを使用してこの情報をフィルタリングできます。

  • %T-リクエストの処理にかかった時間(秒単位)。

  • %{UNIT}T-UNITで指定された時間単位での、リクエストの処理にかかった時間。有効な単位は、ミリ秒の場合はms、マイクロ秒の場合はus、秒の場合はsです。 sを使用すると、フォーマットなしで%Tと同じ結果が得られます。 usを使用すると、%Dと同じ結果が得られます。 %Tとユニットの組み合わせは、2.4.13以降で使用できます。

参照:
http://httpd.Apache.org/docs/current/mod/mod_log_config.html#formats

2
MrWhite