internal dummy connectionのログを取らなくする

httpsdのログの中で散見されるinternal dummy connection。
Apacheが自分自身に行っている(擬似的な?)コネクションということで、有害なモノでないことは分かりましたが、どういうわけかこのinternal dummy connectionのログは必ず3行セットででてきまして、ログファイル上でちょっと目障りでもあるんですよね。

いずれにしてもログを取っておく必要のあるアクセスではないので、internal dummy connectionのログは取らないようにhttpd.confを書き換えようと思います。

ところで、うちのログファイルには、internal dummy connectionのログはこのように出力されます。

localhost6.localdomain6 – – [07/Apr/2013:05:15:49 +0900] “OPTIONS * http/1.0” 200 – “-” “Apache (internal dummy connection)”

まずはこのApacheのログの見方からおさらいしていきますが、コチラの手法に従ってこれを細かく分割してパーツに区切ります。

  1. localhost6.localdomain6
  2. – –
  3. [07/Apr/2013:05:15:49 +0900]
  4. “OPTIONS * http/1.0”
  5. 200
  6. “-“
  7. “Apache (internal dummy connection)”

それぞれの意味は、こんなカンジ。

  1. アクセス元(のIPアドレスまたはリモートホスト名)
  2. リモートユーザ名と認証時のユーザ名
  3. アクセス日時
  4. リクエストヘッダー名、ファイル名、プロトコルバージョン
  5. ステータスコード
  6. 転送データサイズ
  7. 呼び出し元のURL(いわゆるリンク元)
  8. ユーザエージェント(通常はブラウザ)

あとはコレを元に、httpd.confに記述するLog Managementを考えればいいわけです。

今回のケースでログを取らない条件として設定するとしたら、アクセス元(つまりlocalhost6.localdomain6)で制限するか、リクエストヘッダー名(つまりOPTIONS)で制限するか、ユーザエージェント(つまりinternal dummy connection)で制限するかでしょう。
今のところlocalhost6.localdomain6はinternal dummy connectionでしか出てきませんし、OPTIONSも同様です。そしてもちろんユーザエージェントの部分もそうです。
しかし今回はとにかくinternal dummy connectionのログを取らないということが目的。現在はそうでないとしても、これからもしかしたらlocalhost6.localdomain6からのアクセスは出てくるかも知れませんし、OPTIONSだってそうなる可能性はゼロではありません。
なので、最も実効的で即効性のある、ユーザエージェントで制限することにします。

ってゆーか、色々調べてみたら、実際ユーザエージェントで制限をかける方法が紹介されていたんですよね・・・(^-^;;

Apacheのログの制限(ログを取らない設定)は、前にもたとえば画像ファイル(GIF、JPG、PNG)へのアクセスはログを取らない、といった設定を行った関係で、まったく初めてではありません。
このときの操作と同じようにやっていけばOKでしょう(既に覚えてないけど・・・)。

httpsd.confの該当箇所に、「ユーザエージェントがinternal dummy connectionの時はログを取らない」という条件を加えればいいわけですが(そしてそれは画像ファイルへのアクセスを記録しない条件付けを行った所でまとめて記述しておいた方が都合がよい)、そのための記述はこうなります。

SetEnvIf User-Agent “internal dummy connection” no_log

User-Agentがinternal dummy connectionの時は、no_logという環境変数に設定する、という意味になります。
つまりno_logという変数に合致するものを列挙していく=ログを取りたくないケースをno_logという変数にまとめてしまう、ということです。

そして最後に、このno_logという環境変数に合致しないもののログはきちんと記録する、という記述をします。不要なモノをまとめて変数に登録し、それとは違うモノは記録を取りましょう、という流れになるわけですね。

CustomLog /var/log/httpd/access_log combined env=!no_log

この「=!」が、○○に合致しない、という意味になります(上記ならno_logに合致しない、となる)。うちではこの最後の条件文は既に記述済みですから、SetEnvIfのみを加筆し、httpdを再起動させます。

/etc/init.d/httpd restart

さて。
これで、今後internal dummy connectionが含まれるログは記録されなくなるはず。しばらく放置して、様子を見ることにしましょう。これで少しはログが整理されるといいなー。

boota

いろんなモノに、いろんな意味で、ヲタ。なのかも?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)