Apacheアクセスログから特定のエントリを省略する

Apacheアクセスログから特定のエントリを省略する

一致する条件などを実行するスクリプトaccess_logにログをリンクせずにファイル内のノイズエントリを維持する簡単な方法はありますか?grep -v

Apache 統計を監視しますcollectdが、結果として次のメッセージが表示されます。

157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"
157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"

Apacheログに対して分析を実行すると、分析を実行したい理由と実際には関係のないものが得られます(sysadmin監視による活動は気にしません)。

答え1

ログ定義でおよびを組み合わせることができますSetEnvIfenv=

Apache のマニュアルでは、ここで引用した「条件付きロギング」について説明します。

ステータスログ

クライアント要求の特性によっては、アクセスログから特定のエントリを除外するのが便利な場合があります。これは環境変数の助けを借りて簡単に行うことができます。まず、要求が特定の条件を満たすことを示すために環境変数を設定する必要があります。これは通常を通して行われますSetEnvIf。次に、env=ディレクティブの句をCustomLog使用して、環境変数が設定されている要求を含めるか除外します。いくつかの例:

# Mark requests from the loop-back interface 
  SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
# Mark requests for the robots.txt file 
  SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Log what remains 
  CustomLog logs/access_log common env=!dontlog

それは覆うこのセクションのマニュアルの内容。

あなたはこのようなものを見つけるでしょう(テストされていません)

SetEnvIf Remote_Addr "157\.98\.65\.xxx" dontlog

または

SetEnvIf User-Agent "collectd/4\.10\.9" dontlog

関連情報