CentOS 6.2 の syslog を syslog-ng にする

CentOS 6 標準の syslogd は rsyslog なんだけど、CentOS 5 の頃に syslog-ng を使ってたので、それに切り替える手順。番号が連続してないけど気にしない。

  1. EPELのリポジトリを追加する
# wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
# rpm -ivh epel-release-6-5.noarch.rpm
  1. syslog-ng を yum install する
# yum --enablerepo=epel install syslog-ng eventlog syslog-ng-libdbi
  1. 設定変更
# vi /etc/syslog-ng/syslog-ng.conf
  1. syslogd を入れ替える
# /etc/init.d/rsyslog stop
# /etc/init.d/syslog-ng start
  1. syslog-ng を自動起動、rsyslog をお休みさせる
# chkconfig rsyslog off
# chkconfig syslog-ng on

tips 的なもの

  • CentOS 5 時代から設定ファイルの位置が変わってる
    • /etc/syslog-ng.conf → /etc/syslog-ng/syslog-ng.conf
  • filterのmatchの構文が変わってて起動時に WARNING がでる
WARNING: the match() filter without the use of the value() option is deprecated and hinders performance, please update your configuration;
# /etc/init.d/syslog-ng restart
syslog-ng を停止中:                                        [  OK  ]
Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql'
syslog-ng を起動中: Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql'
                                                           [  OK  ]
    • SQL バックエンド周りの依存性の問題らしい。 syslog-ng-libdbi を入れたらおとなしくなる。
# yum install syslog-ng-libdbi