syslog-ng 導入
syslog-ng を使ってみました。
インストール
ports/sysutils/syslog-ng にあるのでさっくりインストール。コレを書いてる時点での最新は 1.6.10 です。
設定ファイルの雛形は /usr/local/etc/syslog-ng/syslog-ng.conf.sample にあるので、cp して使いましょー。syslog.conf で何も追加設定してない場合はこのまま使っても問題ないはず。
次に rc.conf に
syslogd_enable="NO"
syslog_ng_enable="YES"
を追加する。
syslogd を停止する。kill `cat /var/run/syslog.pid`
syslog-ng を起動する。/usr/local/etc/rc.d/syslog-ng.sh start
以上で syslogd → syslog-ng への移行完了。デフォルトの/usr/local/etc/rc.d/syslog-ng.sh では pid ファイルを /var/run/syslog.pid に指定しているので newsyslog.conf の書き換えは不要です。
覚書
リモートホストへ log を渡す設定
例: cron log を 192.168.0.5 で稼動しているログサーバに送る設定
source src { unix-dgram("/var/run/log"); unix-dgram("/var/run/logpriv" perm(0600)); udp(ip("localhost")); internal(); file("/dev/klog"); }; destination logserver { udp("192.168.0.5" port(514)); }; filter f_cron { facility(cron); }; log { source(src); filter(f_cron); destination(logserver); };
リモートホストから log を受ける設定
例:192.168.0.1 で稼動しているホストの log を 192.168.0.5 で稼動しているログサーバで受ける設定。
source loghost1_src { udp(ip("192.168.0.5") port(514)); }; destination loghost1 { file("/var/log/loghost1"); }; filter f_loghost1 { host("192.168.0.5"); };
log メッセージに反応して処理を行う
例:ルータから来る log の中に changed と言うメッセージがあれば、設定ファイルが変更されたと見て routerchange.sh と言うスクリプトを実行する。
destination report_router_change { program("/usr/local/bin/routerchange.sh"); }; filter f_router_change { match("changed"); }; log { source(src); filter(f_router_change); destination(report_router_change); };