[syslog-ng] 「特定の送信元 IP・それ以外」のフィルタ設定
久々に syslog-ng を使う機会があったのでメモ。
やりたいこと
- いくつかの特定の IP は、1 つのログファイルにまとめたい
- それ以外は、IP 毎にファイルを分割したい
たとえば、ネットワーク機器のログは 1 つにまとめ、その他サーバ機器のログは個別に分割したい、というような時。
設定
こんな感じにする
source s_remote {
tcp(ip(0.0.0.0) port(514)); udp(ip(0.0.0.0) port(514));
};
filter f_specific {
host(^172.16.0.1$) or
host(^172.16.0.2$) or
host(^172.16.0.253$) or
host(^172.16.0.254$);
};
filter f_other {
not filter(f_specific);
};
destination d_separate {
file("/var/log/syslog-ng/$HOST/syslog.$YEAR-$MONTH-$DAY" create_dirs(yes));
};
destination d_merge {
file("/var/log/syslog-ng/merged/syslog.$YEAR-$MONTH-$DAY" create_dirs(yes));
};
log { source(s_remote); filter(f_specific); destination(d_merge); };
log { source(s_remote); filter(f_other); destination(d_separate); };
ポイントは、f_specific を否定することにより、"特定の送信元 IP" と "それ以外の IP" というフィルタを作っている点。
※ host() の引数は regexp であることに注意
- 初稿 (Mon Mar 23 22:44:13 JST 2015)