syslog-ngによるログサーバ構築(目次)
| Table of Contents |
はじめに
syslog-ng(RPM版)によるログサーバの構築手順を紹介します。
バージョンはrpm版の最新(2010/6/10時点)である2.1系をインストールします。
インストール環境
- OS
- CentOS 5.5 (kernel 2.6.18-194.3.1.el5)
- パッケージ
- syslog-ng-2.1.4-1
- libevtlog0-0.2.8-1
- libdbi8-0.8.2bb2-3
パッケージのダウンロード
- 必要なパッケージはsyslog-ngのサイトからダウンロードします。
http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/
eventlog
- eventlogのダウンロード
# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/e/eventlog/rhel-5_syslog-ng-2.1/libevtlog0-0.2.8-1.i386.rpm
libdbi8
- libdbi8のダウンロード
# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/l/libdbi8/rhel-5_syslog-ng-2.1/libdbi8-0.8.2bb2-3.rhel5.i386.rpm
syslog-ng
- syslog-ng のダウンロード
# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/s/syslog-ng/rhel-5_syslog-ng-2.1/syslog-ng-2.1.4-1.rhel5.i386.rpm
インストール
- eventlogのインストール
# rpm -ivh libevtlog0-0.2.8-1.i386.rpm
- libdbi8のインストール
# rpm -ivh libdbi8-0.8.2bb2-3.rhel5.i386.rpm
- syslog-ng のインストール
# rpm -ivh syslog-ng-2.1.4-1.rhel5.i386.rpm
設定(サーバ側)
インストール後、syslogが停止されsyslog-ngが起動されますが、
ローカルホストのログを記録しない設定のため注意して下さい。
syslog-ng.confの設定
- 以下の通り動作するよう設定します
- ローカルホストのログはsyslogと同じ「/var/log」配下へ保存する
- リモートホストのログは「/var/log/syslog-ng/$HOST/messages」へ保存する
- 設定ファイル「/etc/syslog-ng/syslog-ng.conf」を編集します。(コメントを外しただけです)
# vi /etc/syslog-ng/syslog-ng.conf # # configuration file for syslog-ng, customized for remote logging # source s_internal { internal(); }; destination d_syslognglog { file("/var/log/syslog-ng.log"); }; log { source(s_internal); destination(d_syslognglog); }; # Local sources, filters and destinations are commented out # If you want to replace sysklogd simply uncomment the following # parts and disable sysklogd # # Local sources # source s_local { unix-dgram("/dev/log"); file("/proc/kmsg" log_prefix("kernel:")); }; # # Local filters # filter f_messages { level(info..emerg); }; filter f_secure { facility(authpriv); }; filter f_mail { facility(mail); }; filter f_cron { facility(cron); }; filter f_emerg { level(emerg); }; filter f_spooler { level(crit..emerg) and facility(uucp, news); }; filter f_local7 { facility(local7); }; # # Local destinations # 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_console { usertty("root"); }; destination d_spooler { file("/var/log/spooler"); }; destination d_bootlog { file("/var/log/boot.log"); }; # # Local logs - order DOES matter ! # log { source(s_local); filter(f_emerg); destination(d_console); }; log { source(s_local); filter(f_secure); destination(d_secure); flags(final); }; log { source(s_local); filter(f_mail); destination(d_maillog); flags(final); }; log { source(s_local); filter(f_cron); destination(d_cron); flags(final); }; log { source(s_local); filter(f_spooler); destination(d_spooler); }; log { source(s_local); filter(f_local7); destination(d_bootlog); }; log { source(s_local); filter(f_messages); destination(d_messages); }; # Remote logging source s_remote { tcp(ip(0.0.0.0) port(514)); udp(ip(0.0.0.0) port(514)); }; destination d_separatedbyhosts { file("/var/log/syslog-ng/$HOST/messages" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes)); }; log { source(s_remote); destination(d_separatedbyhosts); }; - 設定ファイルの構文チェックを行います。
# syslog-ng -s
ログローテーションの設定
ローカルホストログ
- ローカルホストのログはsyslogと同じ/var/log配下に保存するため、syslogの設定ファイルを流用します。
ログローテーション後にsyslogプロセスではなく、syslog-ngプロセスをリロードするよう変更しています。
# vi /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
sharedscripts
postrotate
/etc/rc.d/init.d/syslog-ng reload 2>/dev/null #変更箇所
endscript
}
- 設定ファイルの構文チェックを行います。実行結果に「error」開始で始まる行がなければ問題ありません。
# logrotate -dv /etc/logrotate.d/syslog
エラー時は以下のように表示されます。error: /etc/logrotate.d/********:2 unexpected text
リモートホストログ
- リモートホストのログは正規表現でローテーションするよう設定します。
# vi /etc/logrotate.d/syslog-ng /var/log/syslog-ng/*/messages /var/log/syslog-ng/*/secure /var/log/syslog-ng/*/maillog /var/log/syslog-ng/*/spooler /var/log/syslog-ng/*/boot.log /var/log/syslog-ng/*/cron /var/log/syslog-ng/*/local0.log /var/log/syslog-ng/*/local1.log /var/log/syslog-ng/*/local2.log /var/log/syslog-ng/*/local3.log /var/log/syslog-ng/*/local4.log /var/log/syslog-ng/*/local5.log /var/log/syslog-ng/*/local6.log /var/log/syslog-ng/*/local7.log /var/log/syslog-ng.log { weekly rotate 52 compress postrotate /etc/rc.d/init.d/syslog-ng reload 2>/dev/null endscript }
- 設定ファイルの構文チェックを行います。クライアント側からログが転送されていないため、ログファイルが無いというエラーが出ますが無視します。
# logrotate -dv /etc/logrotate.d/syslog-ng considering log /var/log/syslog-ng/*/local0.log error: stat of /var/log/syslog-ng/*/local0.log failed: No such file or directory considering log /var/log/syslog-ng/*/local1.log error: stat of /var/log/syslog-ng/*/local1.log failed: No such file or directory considering log /var/log/syslog-ng/*/local2.log error: stat of /var/log/syslog-ng/*/local2.log failed: No such file or directory considering log /var/log/syslog-ng/*/local3.log error: stat of /var/log/syslog-ng/*/local3.log failed: No such file or directory considering log /var/log/syslog-ng/*/local4.log error: stat of /var/log/syslog-ng/*/local4.log failed: No such file or directory considering log /var/log/syslog-ng/*/local5.log error: stat of /var/log/syslog-ng/*/local5.log failed: No such file or directory considering log /var/log/syslog-ng/*/local6.log error: stat of /var/log/syslog-ng/*/local6.log failed: No such file or directory considering log /var/log/syslog-ng/*/local7.log error: stat of /var/log/syslog-ng/*/local7.log failed: No such file or directory
設定(クライント側)
リモートホストでのログ転送設定
- 設定ファイルのバックアップを取ります
# cp -rp /etc/syslog.conf /etc/syslog.conf.bak
- ログの転送設定を行います。
# vi /etc/syslog.conf *.* @192.168.11.100
- syslogを再起動します。
# /etc/init.d/syslog restart
起動・自動起動
自動起動の設定
- syslogの自動起動が無効になっている事を確認します。
# chkconfig --list syslog サービス syslog は chkconfig をサポートしますが実行レベルで参照されていません (run 'chkconfig --add syslog')
- syslog-ngの自動起動が有効になっている事を確認します。
# chkconfig --list syslog-ng syslog-ng 0:off 1:off 2:on 3:on 4:on 5:on 6:off
動作確認
ローカルホストのログ確認
ローカルホストのログが「/var/log」配下へ保存される事を確認します。
- ローカルホスト(syslog-ngサーバ)でloggerコマンドを実行しテスト用のログを生成します。
[root@serv100 ~]# logger -p kern.info "test"
- ローカルホストのログが正しく記録される事を確認します。
[root@serv100 ~]# vi /var/log/messages Jun 11 01:47:26 s_local@serv100 root: test
リモートホストのログ転送
リモートホストのログがログサーバの「/var/log/syslog-ng/$HOST/messages」へ保存される事を確認します。
- リモートホストでloggerコマンドを実行しテスト用のログを生成します。
[root@serv101 ~]# logger -p kern.info "test"
- ローカルホスト(syslog-ngサーバ)でログが正しく記録される事を確認します。
[root@serv100 ~]# vi /var/log/syslog-ng/192.168.11.101/messages Jun 11 18:27:32 192.168.11.101/192.168.11.101 root: test