Webサーバのログが1ヶ月で1GB近くに膨らんだ?!

2005/05/27

えー、実は先日、
 
 Webサーバの5月ぶんのログが 800MB オーバー
 
とかいう、素敵チックな状態に陥り始めたのに気が付いて、ようやく
重い腰を上げてWebサーバのログの取り方を改めてみることにしました。
 
今までは.gifや.jpgなどの画像も含む全てのアクセスについてのログを取り、
その巨大なファイルに対して文字列処理のスクリプトを走らせることで
PageViewなどのいろいろなデータを後から紡ぎ出していたのですが、その
スクリプトが完走するまでの時間が異様に長くなってきてしまっていたのです。
 
.gif、.jpgなどの画像データ、あちこちで多用している自作JavaScript(.js)、
それから.cssや.icoなどへのアクセスは、後々に予期せぬトラブルが起こったときに
状況を把握するために、一応全て残しておきたいという気持ちは変わりません。
ただ、普段のPVカウントスクリプトなどを走らせる対象には、
 
 本ログはそのままで、別途コンパクトなログも
 
作っておけば良いのではないか、ということに気が付いたのです。
 
そこで、アクセスログを2つ作ってみることにしました。
CustomLog /(ログdir)/access_log common
CustomLog /(ログdir)/access_log_simple common env=!nologext

そして条件として指定した nologext にはこんな指定をします。
googleなどで SetEnvIf の使い方を見ると必ず載っている常套記述です。
SetEnvIf Request_URI "\.(jpg)|(png)|(gif)|(css)|(js)|(ico)$" nologext
これで、URLの最後が指定された拡張子だった場合には記録が成されない、
というシンプルなログが生成されるはずです。
実際にデーモンを再起動してみると、見事にシンプルなログが生成されました。
試しに5/26日の24時間で生成されたログのサイズを比べてみると、
従来の全保存の場合は1日で 26MB だったところが、シンプルログでは 2.4MB
 
 わずか10分の1にまで、すっきりスリムになりました。
 
ブログのページ構成を見ると良く判りますが、1ページ(html)にアクセスするには、
それに付随する画像やJavaスクリプトを、合わせて10個以上もアクセスしなければ
ならない場合が多くあります。逆にいえば、1ページを表示するだけで、
ログのほうは10行以上も増えていく というのが今までのログの取り方でした。
 
一方、今回切り分けたシンプルログのほうは、ほとんどの場合は1ページ表示
につき1行のログという、非常に判りやすいログになりました。
これでシンプルログのほうはまとめて残しておき、巨大な本ログのほうは月ごとに
別メディアに退避させてしまう、といった手段が取れてホクホクになります。
 
ところで、上記のSetEnvIfの設定はあちこちで常套句のように紹介されて
いる例なのですが、よくよくみると、コレはちょっと変な気がします。
SetEnvIf Request_URI "\.(jpg)|(png)|(gif)|(css)|(js)|(ico)$" nologext
これだと、先頭の「\.」は「jpg」にしか掛かっていません。従って、
/cgi-bin/chiba.cgi?president=hyogif
とかいうURLがあったとしたら(ないない)、最後が「gif」で終わっていますので、
「.gif」でなくても除外されてしまいます。これは想定外の動作です。
 
どの拡張子も「.(ピリオド)」を含んだときだけ除外するのであれば、
SetEnvIf Request_URI "\.(jpg|png|gif|css|js|ico)$" nologext
こうすべきでしょうか。かくいう私も正規表現には慣れていなくて、
こう書いたあとにはいちいちperlで実験しているという情けなさです( ̄▽ ̄;)
 
googleで調べると、どれもこれも全て "\.(jpg)|(png)|(gif)$" のような
書き方一色なのですが・・・うむむ、私が間違っているのでしょうか?


2005/05/27 [updated : 2005/05/27 23:59]


この記事を書いたのは・・・。
CK@デジモノに埋もれる日々 @ckom
ブログ「デジモノに埋もれる日々」「アニメレーダー」「コミックダッシュ!」管理人。デジモノ、アニメ、ゲーム等の雑多な情報をツイートします。




« 停電時に「数分耐えてくれる」格安のUPS(無停電電源装置)

トップに戻る

ch2ch - 2ちゃんねる「○○板の△△スレ」をリストする »


▼ はてなブックマークのコメント ▼


ピックアップタグ




ブログ内検索



▼ コメント ▼

No.1261   投稿者 : ヒョギフ大統領   2005年5月28日 02:36

ヒョギフ大統領の貴重な産卵シーン


No.1262   投稿者 : 匿名   2005年5月28日 07:08

正規表現まちがってないよ!


No.1263   投稿者 : sonic   2005年5月28日 08:00

私も
SetEnvIf Request_URI "\.(gif|jpg|png|ico|css|js)$" optional-request
って書いてますよ。

特定条件に当てはまるものは apache のログに記録しない
http://sonic64.hp.infoseek.co.jp/2002-08-30.html


No.1268   投稿者 : CK   2005年5月28日 16:49

●ヒョギフ大統領さん
オオグンタマのエヒフー! (お約束ありがとうございます(;´д⊂))
 
●Anonymous(匿名)さん
ありがとうございます。ちょっとホッとしました・・・。
 
●sonicさん
エントリ拝見いたしました。やはりそういう記述になりますよね。
googleで " SetEnvIf Request_URI gif " のように検索すると、9割方が
"\.(gif)|(jpg)$" のような記述でしたので自信がゆらいでしまいました。



★コミックダッシュ! 10,000人突破ありがとうキャンペーン!(9/18~10/23)
 
デジモノに埋もれる日々 : (C) CKWorks