syslog-ngについて。

 syslogっていうのはつまり、システムの動作記録をとるものだと思えばいい。誰それがログインしただのどこからメールが届いただの、そういう雑多なものがぼこぼこ記録されている。一部のソフトは別の方法でログを保管することもあるが、種々雑多なプログラムの場合、ほとんどはsyslogツールに丸投げしていることが多い。

 だけどsyslogプログラム(syslogd)はあまりにも長い歴史を誇るため、一部の機能は陳腐化しているし動作もモダンとはいえないらしい。よって、もっと軽快でよく動くツールとして syslog-ng を設定した。

 なお「ログとり専用マシン」に丸投げする設定を含んでいる。

options

 サーバの全体の動作を規定する。通常はあまり触る必要なし。

source

 データの取り込み元を決める。ここも大概はパッケージ任せでOK。

 ただし、ネットから受け取りたい場合だけこんな風に書く。

source net {
        #udp();
        tcp( ip(0.0.0.0) port(514) );
};

 UDPは使わなくていい。UDPが必要なのは、古いsyslogdからのデータを受け付けたい時だけであり、それ以外は禁止しておくべきであろう。

destination

 行き先、書き込み先である。

 ファイルの場合は実マシンの設定を見ればいい。ネットに放つ場合はこうせよ。

destination df_bk1 {
	    file("/var/log/syslog");
	    tcp("送り先のIP");
};

 これで、/var/log/syslogにも落としつつログサーバにも送れる。本も読めるし影絵もできるぞ(違)。

filter

 条件式だ。たとえば「マシン某からきたログ限定(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

 ソース、条件式、行き先をここでまとめる。まぁ以下を見て。

log {
        source(net);
        filter(f_bk1);
        destination(df_bk1);
};

 ネットから来たもの、f_bk1の条件に合致する奴はdf_bk1に従ってログが記録される。