syslogサーバの簡単な構築方法です。
ちなみにOSはAmazonLinuxです。
まずはyumでsyslog-ngをインストールします。
新しいamazonlinuxにはrsyslogが入ってますので入ってたらアンインストールします。
$ yum install syslog-ng --enablerepo=epel $ yum install syslog-ng-libdbi --enablerepo=epel
自動起動設定を行います。
$ chkconfig syslog-ng on
続いてsyslogの設定ファイルを書き換えます。
$ vi /etc/syslog-ng/syslog-ng.conf
一番下でも良いので下記の記述を追加します。
source s_dummy { tcp(ip("0.0.0.0") port(514)); }; destination d_dummy_log { file("/var/log/dummy_log"); }; log { source(s_dummy); destination(d_dummy_log); };
この設定はポート514で受けたログをdummy_logに出力するものです。
syslogを再起動すると設定が反映されます。
$ syslog-ng restart
これでsyslogサーバの完成です。
動作確認をするために送信サーバ側も設定します。
(なお、同じサーバからでもテストは可能です)
syslog-ngがインストールされている前提とし、syslogの設定ファイルを書き換えます。
$ vi /etc/syslog-ng/syslog-ng.conf
一番下でも良いので下記の記述を追加します。
#destination d_cron { file("/var/log/cron"); }; destination d_cron { tcp("XX.XX.XX.XX" port(514)); };
destination d_cronの行をコメントアウトし上記のように設定を追加します。
XX.XX.XX.XXは構築したサーバのIPアドレスになります。
上記の設定はcronログを出力する代わりにsyslogサーバへ転送するものになります。
$ syslog-ng restart
syslogを再起動するとcronログはsyslogサーバ側に出力されるようになります。
今回、外部サービスのsyslog転送機能を確認したいということで急遽syslogサーバが必要に簡易的に用意をしました。
最近はsyslog-ngよりも新しいrsyslogの方が標準ですが急いで構築したかったので慣れているsyslog-ngの方を使用しました。