ログ監視ツール "qmailanalog" を用いたサーバ管理


1. はじめに

ログファイルは大変膨大なためログを見て異常を発見することはかなり骨の折 れる作業である.そこでメールサーバではログファイルに書かれてある内容を 整理してもう少し見やすい形にするために qmailanalog というログ統計処理 ツールを用いる.

1. /etc/cron.daily/sysklogd の修正

slink では一週間分のメールログが /var/log/mail.log.0 に書き込まれるのだが, potato からはメールログが 2MB を越える場合,一日毎にログファイルが mail.log.1,mail.log.2...のように作成される.したがって一週間分のメールログを 作成させるためには 2MB の制限を外さなければならない.作成されるログファイルを 表示する Perl スクリプト /usr/sbin/syslogd-listfiles には以下のように オプションが書いてある(赤字で示してあるのが 2MB の制限を外すオプション).

Usage: syslogd-listfiles      
Options: -f file        specifies another syslog.conf file    
         -a | --all     list all files (including news)       
         --auth         list all files containing auth.   
	 --ignore-size  don't rotate files which got too large (default: 2MB)  
         --news         include news logfiles, too 
         -w | --weekly  use weekly pattern instead of daily 

一日毎にログファイルを作成するのは /etc/cron.daily/sysklogd である, この中で syslogd-listfiles が呼び出されている./etc/cron.daily/sysklogd の以下の部分を修正してオプションを追加する.

cd /var/log
for LOG in `syslogd-listfiles --ignore-size`

このようにすることで一週間分のメールログが一 つのファイルに書き込まれる.

3. qmailanalog のインストール

ソースの取得・展開

qmailanalog-0.70.tar.gzhttp://www.ne.jp/asahi/cyber/taki/djb/qmailanalog から 取得し, それを展開する.

$ gzip -dc qmailanalog-0.70.tar.gz | tar xvf -

インストール

$ cd qmailanalog-0.70
$ make
$ su  or sudo -s
# make setup check 

設定

senders の編集

文献1 によると"メーリングリストプログラム ezmlm を使用している場合, 分析結果が長くなってしまうため, senders ファイルを編集すること"とある.

/usr/local/qmailanalog/bin/senders を以下の行を追加する.

#!/bin/sh
# WARNING: This file was auto-generated. Do not edit!
awk '
/^m/ {
sender = $10"/"$8
sub("-return-.*=.*@","@",sender)
...
...
/^d/ {
sender = $10"/"$7
sub("-return-.*=.*@","@",sender)

log ファイルの確認

/etc/syslog.conf をみて mail.log が単独で出力されるかを確かめる.

crontab の編集

毎週 1 回 解析されたログファイルをメールで管理者に流すようにする.

qmailanalog にログファイルを解析させるスクリプト /usr/local/sbin/mail.log-analog を編集し, crontab で 毎週日曜日の 07:30 に実行させる.

mail.log-analog

実行許可(755)を与えるのを忘れないこと。

# crontab -e

エディタが立ち上がって以下の内容を一行で書き込む. もしエディタが上がらない場合は環境変数 EDITOR を emacs , vi などで指定する ($export EDITOR=vi(emacs)).

30 7 * * 7 ( echo "To: postmaster@ep.sci.hokudai.ac.jp" ; echo "From: mail@ep.sci.hokudai.ac.jp" ; echo "Subject: mail.log" ; echo "" ; /usr/local/sbin/mail.log-analog ) | /var/qmail/bin/qmail-inject -f epmail@ep.sci.hokudai.ac.jp

(このページの最後に載せた) mail.log-analog は http://www.ne.jp/asahi/cyber/taki/djb/qmailanalog/qmailanalog.html に書かれたスクリプトの一部を書き換えて専攻メールサーバで使用しているも のです. 本専攻サーバでのログ解析は全体の配送量などを知るのみとしてエラ ーメッセージや各構成員へのメール配送数など細かい解析は自動的に送らない とした(下のスクリプトでコメントアウトした部分を実際に実行するとサイズ の大きなメールとなって結局管理者が読み飛ばしてしまうから).

#!/bin/sh
#
# taken from http://www.ne.jp/asahi/cyber/taki/server/qmail/qmailanalog.html
# modified by Kyoma TAK and Yasuhiro C. Murata 2000/03/17
# 2000/03/18
#
PATH=/usr/local/qmailanalog/bin:/var/qmail/bin:/usr/bin
MAILLOG="/var/log/mail.log.0"
QMAILLOG="/tmp/qmail.$$"
QMAILLOG2="/tmp/qmail.$$2"
/usr/bin/awk '{$1="";$2="";$3="";$4="";$5="";print}'\
< $MAILLOG | matchup > $QMAILLOG 5 > QMAILLOG2
zoverall < $QMAILLOG
#zfailures < $QMAILLOG
#zdeferrals < $QMAILLOG
#zrecipients < $QMAILLOG
#/usr/bin/perl -pe 's/-return-.*=.*@/@/g' < $QMAILLOG | zsenders)
/bin/rm -f $QMAILLOG
/bin/rm -f $QMAILLOG2

matchup を manpath に通す

/etc/manpath.config に以下を書き加える。

#MANDATORY_MANPATH/usr/src/pvm3/man
......
MANDATORY_MANPATH/usr/local/man
MANDATORY_MANPATH/var/qmail/man
MANDATORY_MANPATH/usr/local/qmailanalog/man
...
#*PATH**MANPATH*
.........
MANPATH_MAP/opt/sbin/opt/man
MANPATH_MAP/var/qmail/bin/var/qmail/man
MANPATH_MAP/usr/local/qmailanalog/man/usr/local/qmailanalog/man
...
#*PATH**CATPATH*
.........
MANDB_MAP/opt/man/var/cache/man/opt
MANDB_MAP/var/qmail/man/var/qmail/man
MANDB_MAP/usr/local/qmailanalog/man/usr/local/qmailanalog/man

参考文献

  1. ログの統計情報ツール qmailanalog



最終更新日: 2006/05/01(土屋 貴志) Copyright © 2001 epcore