DNSTranによるAnalogの高速化
カテゴリ:ログ管理
日時:2005/02/11 15:39
名前解決は基本的にコストの高い処理であり、各種のログは通常IPアドレスのみを記録する。
Analogには、アクセスログに記録されたIPアドレスをホスト名に変換する機能がある。例えば、/etc/analog/analog.cfgに
しかし、この機能は非常に遅い。 上記の設定で毎朝アクセスログを解析させていたところ、解析にかかる時間がじょじょに長くなり、1000分(秒ではない)を突破するようになってしまった。
DNSTranを使えば、この問題は解決する。まず、DNSTranをダウンロードし、アーカイブを展開して/usr/local/bin以下に移動する。
Analogには、アクセスログに記録されたIPアドレスをホスト名に変換する機能がある。例えば、/etc/analog/analog.cfgに
DNS WRITEと記述すれば、DNS問い合わせを行って名前解決し、/tmp/dnsfileに結果をキャッシュする。
DNSFILE /tmp/dnsfile
しかし、この機能は非常に遅い。 上記の設定で毎朝アクセスログを解析させていたところ、解析にかかる時間がじょじょに長くなり、1000分(秒ではない)を突破するようになってしまった。
DNSTranを使えば、この問題は解決する。まず、DNSTranをダウンロードし、アーカイブを展開して/usr/local/bin以下に移動する。
# wget http://www.summary.net/soft/dns-x86.tar.gz次に、/usr/local/bin/dnstran/dnstran.cfgの以下の部分を修正する。
# tar -xzvf dns-x86.tar.gz
# mv dnstran1.5.2 /usr/local/bin/dnstran
translate no
↓
translate yes
verbose noこれでDNSTranが使えるようになった。まずは、既存のアクセスログを解析させてDNSキャッシュを作成する。
↓
verbose yes
# ./dnstran /var/log/apache2/access_log &これによって作成される/usr/local/dnstran/dnscacheがDNSキャッシュである。このファイルをAnalogが利用するように、/etc/analog/analog.cfgに以下の記述を追加する。
DNS READ/usr/local/bin/dnstran.shとして、アクセスログからDNSキャッシュを生成するスクリプトを用意する。
DNSFILE /usr/local/dnstran/dnscache
#!/bin/shこのスクリプトを、Analogによる解析の直前にcronに実行させる。ウチではAnalogの解析を5:30に実行しているので、dnstranは5:00に実行するようにする。
cd /usr/local/bin/dnstran/
./dnstran /var/log/apache2/access_log
rm /var/log/apache2/access_log.gz
0 5 * * * root /usr/local/bin/dnstran.shDNSTranを入れたことにより、Analogの解析時間は2分以下に短縮した。1000分て一体……。