参考:
Webalizer DNS Readme
Webalizerをインストール
webalizer を使ってアクセス解析をしていますが、いままで DNS の逆引きをしていませでした。デフォルトの設定では逆引きしないようです。
webalizer の設定ファイル webalizer.conf を書き換えて DNS キャッシュファイルを作成させるようにします。
webalizer.conf は以下を有効にしました。
DNSCache dns_cache.db
DNSChildren 0
既にログが大量にある場合 (ログが 44MB ほどありました)はかなり時間がかかるので、ログ解析とは別にショートカット webazolver を使って DNS キャッシュファイルを作成します。DNSChildren を 0 にすると、DNS キャッシュファイルは作成せずに、キャッシュファイルを利用して名前解決だけ行います。
ショートカット webazolver のプロパティは、
webalizer.exe -N 10 -C webalizer.conf -D dns_cache.db
とします。終わるまでに結構時間がかかります。
このままでは DNS キャッシュの作成を手動でやらないといけません。今まで全てのログを同じファイルに出力していましたが、一ヶ月単位でログを分割するように IIS を設定しました。
ログ解析と DNS キャッシュを同時に行うために DNSChildren の値は 5 に変更しました。
また、
Incremental yes
IncrementalName webalizer.current
にして古いデータを引き継ぐようにしました。
IIS ではログファイル名は、月単位で分割すると、u_ncYYMM.log (YY: 年、MM: 月) となるので次のようなバッチファイルを作成してタスクスケジューラに登録しました。
--------------------------------ここから----------------------------------
@echo off
set LOGDIR=C:¥inetpub¥logs¥LogFiles¥W3SVC1
set LOG=u_nc
for %%i in (%LOGDIR%¥%LOG%????.log) do set LASTFILE=%%i
for %%i in (%LOGDIR%¥%LOG%????.log) do if not %LASTFILE%==%%i set PREFILE=%%i
C:¥webalizer-2.21-02-cygwin¥webalizer.exe -c C:¥webalizer-2.21-02-cygwin¥webalizer.conf -N 0 %PREFILE%
C:¥webalizer-2.21-02-cygwin¥webalizer.exe -c C:¥webalizer-2.21-02-cygwin¥webalizer.conf %LASTFILE%
--------------------------------ここまで----------------------------------
一応、月替わりも考慮して前月分は DNS キャッシュは作成しないでページを作成して、今月分は DNS キャッシュを作成するようにしました。