syslogっていうのはつまり、システムの動作記録をとるものだと思えばいい。誰それがログインしただのどこからメールが届いただの、そういう雑多なものがぼこぼこ記録されている。一部のソフトは別の方法でログを保管することもあるが、種々雑多なプログラムの場合、ほとんどはsyslogツールに丸投げしていることが多い。
だけどsyslogプログラム(syslogd)はあまりにも長い歴史を誇るため、一部の機能は陳腐化しているし動作もモダンとはいえないらしい。よって、もっと軽快でよく動くツールとして syslog-ng を設定した。
なお「ログとり専用マシン」に丸投げする設定を含んでいる。
サーバの全体の動作を規定する。通常はあまり触る必要なし。
データの取り込み元を決める。ここも大概はパッケージ任せでOK。
ただし、ネットから受け取りたい場合だけこんな風に書く。
source net {
#udp();
tcp( ip(0.0.0.0) port(514) );
};
UDPは使わなくていい。UDPが必要なのは、古いsyslogdからのデータを受け付けたい時だけであり、それ以外は禁止しておくべきであろう。
行き先、書き込み先である。
ファイルの場合は実マシンの設定を見ればいい。ネットに放つ場合はこうせよ。
destination df_bk1 {
file("/var/log/syslog");
tcp("送り先のIP");
};
これで、/var/log/syslogにも落としつつログサーバにも送れる。本も読めるし影絵もできるぞ(違)。
条件式だ。たとえば「マシン某からきたログ限定(host)」とか「とあるサービス限定(program)」とか「ある文字列みっけ(match)」なんて項目を記述してグループ化する。
〜でない(not)とか、〜かつ〜でない(and not)なんて書き方もできるようだ。
# for bk1
filter f_bk1 { host("suzumiyaharuka.de"); };
filter f_syslog { not facility(auth, authpriv); };
filter f_messages {
level(info,notice,warn)
and not facility(auth,authpriv,cron,daemon,mail,news);
};
filter f_mailreject {
match("reject:");
};
ソース、条件式、行き先をここでまとめる。まぁ以下を見て。
log {
source(net);
filter(f_bk1);
destination(df_bk1);
};
ネットから来たもの、f_bk1の条件に合致する奴はdf_bk1に従ってログが記録される。