2012年10月15日月曜日

CentOS5.8でsyslog-ngをインストールしてリモートホストからのログが受信できるところまで設定してみた

■概要
syslogの次世代版と言われているsyslog-ngを(今更ながら興味本位でw)検証してみました
インストール方法とリモートホストからログを受け取れる方法まで紹介いたします
2012/10/12、現在の最新版は3.4みたいです
https://github.com/balabit/syslog-ng-3.4

■環境
[root@yoshi3 ~]# uname -an
Linux yoshi3 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@yoshi3 ~]# cat /etc/issue
CentOS release 5.8 (Final)

yoshi3を受け取り側のホスト
yoshi5を送信側のホストとして設定していきます

■インストール
yum -y install syslog-ng
syslog-ng -V
syslog-ng 2.1.4
yumのリポジトリサーバではあまり新しいバージョンがコミットされてないようです

■起動テスト
service syslog stop
既存のsyslogが起動している場合は停止しましょう
service syslog-ng start
tailf /var/log/messages
他のターミナルでログの状況を確認しながら
logger test-log
で、tailfしているログにログが流れることを確認しましょう
基本的にはこの段階でsyslog-ngへの移行が完了となります

■ログ発信側の設定(yoshi5で行います)
vi /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none @yoshi3
今回は/var/log/messagesに流れるログをそのまま転送します
service rsyslog restart
今回は発信側がrsyslogでしたが、全く同じようにsyslogでも行えます
logger test
/var/log/messagesにログが出力されること
ログの受け取り側で「tcpdump udp」を実行してログがきていることを確認します

■ログ受信側設定
cd /etc/syslog-ng/
cp -ip syslog-ng.conf{,.org}
vi 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)); ⇒ 追加する
  tcp(ip(0.0.0.0) port(514)); ⇒ 追加する
}

destination d_yoshi5 { file("/var/log/yoshi5.log"); }; ⇒ 追加する

filter f_yoshi5   { host(yoshi5); }; ⇒ 追加する

log { source(s_sys); filter(f_yoshi5); destination(d_yoshi5); }; ⇒ 追加する
上記5つを追加しましょう。既存の設定ファイルに上書きで問題ないです。
記述する場所もどこでも問題ないですが、念のためそれぞれのセクションの直下に書くとよいと思います。
destinationならdestinationでまとまって記載されているところがあるので、そのすぐ後に記載する
service syslog-ng restart
tailf /var/log/yoshi5.log
をした状態でyoshi5から「logger testyoshi5」を実行してみましょう
yoshi5からのログが表示されると思います
もしこれでも表示されない場合にはFWなどの設定が抜けている可能性があるので、yoshi3で514ポートをtcp、udpともにオープンする設定をしましょう


ちなみに今回の設定だとyoshi5.logとmessagesにもログが流れてしまうのでそれを回避したい場合は既存の設定ファイルを少々いじる必要がありそうです

0 件のコメント:

コメントを投稿