仮想サーバがたくさんいるので、syslogメッセージをネットワーク管理サーバで集中管理したい。CentOS5で採用されているsyslogdでも実現できるが、せっかくなので信頼性や柔軟性に優れているといわれるsyslog-ngを使うことにする。
syslog-ngはCentOSのリポジトリにはないので、yum installでインストールできない。以下の2つのファイルをwgetでダウロードした。
ftp://ftp.silfreed.net/repo/rhel/5/x86_64/silfreednet/RPMS/eventlog-0.2.7-1.el5.x86_64.rpm
ftp://ftp.silfreed.net/repo/rhel/5/x86_64/silfreednet/RPMS/syslog-ng-2.0.9-3.el5.x86_64.rpm
まずsyslogサーバ側の設定。rpmコマンドで上記2つのパッケージをインストールする。
[root@manager1 ~]# yum install eventlog-0.2.7-1.el5.x86_64.rpm [root@manager1 ~]# yum install syslog-ng-2.0.9-3.el5.x86_64.rpm
次に/etc/syslog-ng/syslog-ng.confを編集して、UDPポート514番をつかってsyslogメッセージを受信するように設定する。具体的には#でコメントアウトされている udp(ip(0.0.0.0) port(514)); の#を外すだけ。
[root@manager1 ~]# vi /etc/syslog-ng/syslog-ng.conf
...
source s_sys {
file ("/proc/kmsg" log_prefix("kernel: "));
unix-stream ("/dev/log");
internal();
udp(ip(0.0.0.0) port(514));
};
...
設定ファイルを編集したら、構文チェックをする。問題がなければなにもメッセージが出ない。
[root@manager1 ~]# syslog-ng -s
次にiptablesの設定を変更する。
[root@manager1 ~]# vi /etc/sysconfig/iptables ... -A RH-Firewall-1-INPUT -p udp -m udp --dport 514 -j ACCEPT ...
[root@manager1 ~]# service iptables restart
次に現在動いているsyslogdを停止して、syslog-ngを起動する。
[root@manager1 ~]# service syslog stop [root@manager1 ~]# service syslog-ng start
ここまでうまく行ったら、syslogdの自動起動を停止してsyslog-ngを自動起動するようにする。
[root@manager1 ~]# chkconfig syslog off [root@manager1 ~]# chkconfig syslog-ng on
ちなみにsyslog-ndでもロックファイルとしてsyslogdと同じ/var/run/syslogd.pidを使うので、logrotateの設定を変える必要はない。
続いてクライアント側の設定。サーバと同様に2つのパッケージをインストールする。
[root@storage1 ~]# yum install eventlog-0.2.7-1.el5.x86_64.rpm [root@storage1 ~]# yum install syslog-ng-2.0.9-3.el5.x86_64.rpm
/etc/syslog-ng/syslog-ng.confは、以下の3行を追加する。
[root@manager1 ~]# vi /etc/syslog-ng/syslog-ng.conf
...
destination d_manager { udp("192.168.0.26"); };
...
log { source(s_sys); filter(f_auth); destination(d_manager); };
...
log { source(s_sys); filter(f_default); destination(d_manager); };
...
設定ファイルを編集したら、構文チェックをする。
[root@storage1 ~]# syslog-ng -s
次に現在動いているsyslogdを停止して、syslog-ngを起動する。
[root@storage1 ~]# service syslog stop [root@storage1 ~]# service syslog-ng start
ここまでうまく行ったら、syslogdの自動起動を停止してsyslog-ngを自動起動するようにする。
[root@storage1 ~]# chkconfig syslog off [root@storage1 ~]# chkconfig syslog-ng on
syslogサーバ側でtail -f /var/log/messagesをやっておくと、クライアント側でsyslog-ngを起動したタイミングでメッセージが上がってくるのが見える。
