syslog-ng

CentOS 5.2上でやってみた

インストール

yumで入れようと思ったけど、リストになかった(いまいちLinuxのパッケージ管理はわからん)ので、手動でやってみる。

cd /usr/local/src
tar xfz syslog-ng-1.6.12.tar.gz
cd syslog-ng-1.6.12
./configure
make
make install

syslog-ngコマンドは、/usr/local/sbin/にインストールされた。

設定

/etc/syslog-ng.confを作る。

ここでは、*.infoなログを、先ほど作ったFreeBSDサーバ上のsyslog-ngで受け取ってみることにする。

まずは、既存のsyslogを置き換えるためのconfを作成 途中にコメント行があるのは、syslog.confの記法だと、「*.infoのうち、mail.infoは除く」という記述ができるが、syslog-ngでは書き方が分からなかったので、とりあえずの措置。

source src {
       pipe("/proc/kmsg" log_prefix("kernel: "));
       unix-stream("/dev/log");
       internal();
};

filter f_info          { level(info); };
#filter f_mail_none     { facility(mail) and level(none); };
#filter f_authpriv_none { facility(authpriv) and level(none); };
#filter f_cron_none     { facility(cron) and level(none); };
filter f_authpriv      { facility(authpriv); };
filter f_mail          { facility(mail); };
filter f_cron          { facility(cron); };
filter f_emerg         { level(emerg); };
filter f_boot          { facility(local7); };

destination d_messages { file("/var/log/messages"); };
destination d_secure   { file("/var/log/secure");   };
destination d_maillog  { file("/var/log/maillog");  };
destination d_cron     { file("/var/log/cron");     };
destination d_emerg    { usertty("*");              };
destination d_boot     { file("/var/log/boot.log"); };

log { source(src); filter(f_info);  destination(d_messages); };
log { source(src); filter(f_authpriv); destination(d_secure); };
log { source(src); filter(f_mail);  destination(d_maillog); };
log { source(src); filter(f_cron);  destination(d_cron); };
log { source(src); filter(f_emerg); destination(d_emerg); };
log { source(src); filter(f_boot);  destination(d_boot); };

できたら、設定ファイルのチェック

syslog-ng -s -f /etc/syslog-ng.conf

テスト

syslogを止める。

service syslog stop

syslog-ngを起動

syslog-ng -f /etc/syslog-ng.conf

ログをどうにかして生成させて確認。

今回は、下のPHPスクリプトを書いてログを投げてみた。

#!/usr/bin/php
<?php
syslog(LOG_INFO, "Test Log Message");
?>

起動設定

/etc/init.d/syslog-ngを作成

#!/bin/bash
#
# syslog-ng        Starts syslogd/klogd.
# chkconfig: 2345 12 88
# description: Syslog is the facility by which many daemons use to log \
# messages to various system log files.  It is a good idea to always \
# run syslog.
### BEGIN INIT INFO
# Provides: $syslog-ng
### END INIT INFO

# Source function library.
. /etc/init.d/functions

RETVAL=0

start() {
       [ -x /usr/local/sbin/syslog-ng ] || exit 5

       echo -n $"Starting system logger: "
       daemon /usr/local/sbin/syslog-ng -f /etc/syslog-ng.conf
       RETVAL=$?
       echo
       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/syslog-ng
       return $RETVAL
}
stop() {
       echo -n $"Shutting down system logger: "
       killproc syslog-ng
       RETVAL=$?
       echo
       [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/syslog-ng
       return $RETVAL
}
restart() {
       stop
       start
}
case "$1" in
 start)
       start
       ;;
 stop)
       stop
       ;;
 restart)
       restart
       ;;
 *)
       echo $"Usage: $0 {start|stop|restart}"
       exit 2
esac
exit $?

実行権限を付与

chmod +x /etc/init.d/syslog-ng

自動起動設定と、syslogの自動起動禁止設定

# chkconfig --list | grep syslog
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
# chkconfig syslog off
# chkconfig --list | grep syslog
syslog          0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig --add syslog-ng
# chkconfig --list | grep syslog-ng
syslog-ng       0:off   1:off   2:on    3:on    4:on    5:on    6:off

ログサーバへのログ送出

送出元(CentOS)から、送出先(FreeBSD)にログを送ってみるテスト

受信側になるサーバのsyslog-ng.confに、以下のセットを追加した。

要するに、192.168.0.12の514/udpポートで待ち受けておいて、ログはtestlogに出力しますよ、と言うこと。

source centmini {
    udp(ip("192.168.0.12") port(514));
};
filter f_info          { level(info); };
destination d_test     { file("/var/log/testlog"); };
log { source(centmini); filter(f_info);      destination(d_test);  };

で、送出側。

.infoなログをgratin(192.168.0.12)にudpで送出すると言う定義。

filter f_info          { level(info); };
destination d_gratin   { udp("gratin");             };
log { source(src); filter(f_info);   destination(d_gratin);   };

これだけ。 結構簡単。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS