The syslog-ng Administrator Guide
使用するマクロ($XXXで始まるもの)の参照に必須です。
syslogはファシリティとレベルを使ってログを分けて保存するだけですが、syslog-ngでは、更にログの内容を見て分けるこ事が可能です。
また、ログの内容からプログラムを起動させる事も可能です。ここでは説明してませんが・・・
で、syslog-ng、これを使ったら、もうsyslogへは戻れません。便利すぎる。
インストール
> cd /usr/pkgsrc/sysutils/syslog-ng
> make install
rcスクリプトの作成
rcスクリプトは勝手に作ってくれないようなので作ります。インストール直後にそのメッセージが出ると思います。
> cp /usr/pkg/share/examples/rc.d/syslogng /etc/rc.d/syslogng
syslog-ng.confの作成
使用しているsyslog.confの内容を元にsyslog-ng.confを作成します。作成にはsyslog2ngを使用します。
設定ファイルのリンクを/etcへ作っておきます。このへんはお好みで。
> cd /usr/pkg/etc/syslog-ng/
> mv syslog-ng.conf syslog-ng.conf.bak
> syslog2ng /etc/syslog.conf > syslog-ng.conf
> cd /etc
> ln -s /usr/pkg/etc/syslog-ng/syslog-ng.conf
syslog-ng.confの編集
ファイルの先頭に以下の2行を追加して下さい。追加しないと設定ファイルのチェックで警告が出てうるさい。それから、stats_freq(0)も。/var/log/messageにsyslog-ngのログが10分おきに発生するのを止めます。mark_freq(0)は /var/log/messageに --MARK--を残さない設定です。
@version: 3.2
@include "scl.conf"
...
options{
...
stats_freq(0);
mark_freq(0);
};
syslogの停止
> /etc/rc.d/syslogd stop
/etc/rc.conの設定
syslogd=NO
syslogng=YES
syslog-ngの起動
> /etc/rc.d/syslogng start
で、なにをやりたかったというと・・・
実は、RTX1000のログで、不要なものがあり、それを保存したくなかったのです。
編集箇所は、syslog-ng.confの最後の方にあると思います。もちろん、syslog2ngを使ってsyslog-ng.confを作ってればの話ですが・・・
以下の設定では、ログメッセージに”initiate ISAKMP phase to”が見つかった場合、そのログを捨てます。
filter f_15 {
facility(local7) and level(debug..emerg) and not match("initiate ISAKMP phase to" value("MSG"));
};
または
filter f_15 {
facility(local7) and level(debug..emerg) and not message("initiate ISAKMP phase to");
};
以下の設定では、ログメッセージ・ヘッダーに”IKE”がが見つかった場合、そのログを捨てます。よって[IKE]で始まるログは全て捨てられます。
filter f_15 {
facility(local7) and level(debug..emerg) and not match("IKE" value("MSGHDR"));
};
編集後、設定をチェックさせ読み込ませます。
> /etc/rc.d/syslogng checkconfig
> /etc/rc.d/syslogng reload
ログ・ローテーション
$YEARと$MONTHマクロを使用すれば簡単にできます。
destination d_9 {
file("/var/log/rtx1000.$YEAR$MONTH" create_dirs(yes));
};
テンプレート
記録するログの内容を変更できます。例えば日付は標準は月/日/年ですが、これを年/月/日へ変更できます。/etc/syslog-ne.confを編集します。
コメントアウトしてある行ではファシリティとレベルも記録するようになっています。飛んできているsyslogのファシリティが分からない時にちょっと使うために用意してます。
#テンプレート
template t_1 {
# template("$ISODATE $HOST <$FACILITY-$LEVEL> $MSGHDR $MSG\n"); template_escape(no);
template("$ISODATE $HOST $MSGHDR $MSG\n"); template_escape(no);
};
...
destination d_2 {
file("/var/log/messages.$YEAR$MONTH" create_dirs(yes) template(t_1));
};
ログ・サプレス (重複メッセージの省略)
同じメッセージが出現した場合、続くメッセージを Last message repeated n times. と表示させ省略します。ARP: Duplicate IP addressなど、1秒間でたくさん同じ内容が表示されるメッセージに有効です。
以下の設定では、同じメッセージを180秒間毎に省略します。
destination d_9 {
file("/var/log/rtx1000.$YEAR$MONTH" create_dirs(yes) suppress(180));
};
テンプレート