CentOSでsyslogをやめてrsyslogを始めました
apacheのLOGを、日次で圧縮してscpして・・・ってのがナンセンスに思えてならない
そこで高可用性なSyslogdであり、BSD syslogdと設定ファイル等の互換がある「rsyslog」を導入した
※実際にapacheのLOGをリモートに吐き出すやり方は後日記事にします
この目的ならfluentdを使うほうがベターです。
rsyslog(というよりsyslog)は、高速なLOGを取りこぼすし、意外とダメダメでした。
この記事を最初に書いたときには既にリリースされてたfluentd・・・
自分の情弱ぶりを呪うばかりです・・・
fluentd https://github.com/fluent/fluentd
syslogを停止、OS起動時に自動起動しないようにする
さらにsyslog関連のlogrotateの設定を削除
# /etc/init.d/syslog stop カーネルロガーを停止中: [ OK ] システムロガーを停止中: [ OK ] # chkconfig syslog off # chkconfig --list syslog syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off # rm -f /etc/logrotate.d/syslog
rsyslogインストール
古いので、公式サイトから5系のstableバージョンのソースアーカイブをダウンロードしてインストールします
http://www.rsyslog.com/download/
# wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-5.8.6.tar.gz # tar zxvf rsyslog-5.8.6.tar.gz # cd rsyslog-5.8.6
configureします
成功すると、コンパイル時に追加の機能一覧が表示される
"configure --help"でオプションを確認できるので適宜追加
# ./configure (省略) **************************************************** rsyslog will be compiled with the following settings: Large file support enabled: yes Networking support enabled: yes Regular expressions support enabled: yes Zlib compression support enabled: yes rsyslog runtime will be built: yes rsyslogd will be built: yes GUI components will be built: no custom module 1 will be built: no Unlimited select() support enabled: no ---{ input plugins }--- Klog functionality enabled: yes (linux) (省略)
インストール
make checkで"All 3 tests passed"と表示されればmake成功
# make # make check (省略) DevNull.cfgtest succeeded NoExistFile.cfgtest succeeded PASS: cfg.sh ================== All 3 tests passed (省略) # make install
設定ファイルのサンプルをダウンロード
適切な場所に設置
rsyslog.confはソースアーカイブから持ってきます
# cd .. # wget http://image.gihyo.co.jp/assets/files/book/2011/978-4-7741-4622-5/rsyslog-sample.zip # unzip rsyslog-sample.zip # cp ./rsyslog-5.8.6/rsyslog.conf /etc/ # cp ./rsyslog.log /etc/logrotate.d/rsyslog # cp ./rsyslog.sysconfig /etc/sysconfig/rsyslog # cp ./rsyslog.init /etc/init.d/rsyslog # chmod +x /etc/init.d/rsyslog
rsyslogは、独自のログフォーマットで、RFC3164、5424に準拠していません
お馴染みのRFC3164形式で出力するように変更
# vim /etc/rsyslog.conf 【最上段に追記】 # Use traditional timestamp format $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
rsyslog再起動時のmessagesの違い
【BEFORE】
2011-11-30T17:07:10.489696+09:00 HOST01 kernel: Kernel logging (proc) stopped. 2011-11-30T17:07:10.489708+09:00 HOST01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.6" x-pid="11589" x-info="http://www.rsyslog.com" exiting on signal 15. 2011-11-30T17:07:10.595799+09:00 HOST01 kernel: imklog 5.8.6, log source = /proc/kmsg started. 2011-11-30T17:07:10.595860+09:00 HOST01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.6" x-pid="11608" x-info="http://www.rsyslog.com" start
【AFTER】
Nov 30 17:32:50 HOST01 kernel: Kernel logging (proc) stopped. Nov 30 17:32:50 HOST01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.6" x-pid="11720" x-info="http://www.rsyslog.com" exiting on signal 15. Nov 30 17:32:50 HOST01 kernel: imklog 5.8.6, log source = /proc/kmsg started. Nov 30 17:32:50 HOST01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.6" x-pid="11951" x-info="http://www.rsyslog.com" start
起動時に下記エラーがでるので/etc/sysconfig/rsyslogも修正します
2011-11-30T17:00:26.752552+09:00 HOST01 rsyslogd: WARNING: rsyslogd is running in compatibility mode. Automatically generated config directives may interfer with your rsyslog.conf settings. We suggest upgrading your config and adding -c5 as the first rsyslogd option. 2011-11-30T17:00:26.753499+09:00 HOST01 rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad imuxsock
# vim /etc/sysconfig/rsyslog SYSLOGD_OPTIONS="-m 0" ↓ SYSLOGD_OPTIONS="-c5"
rsyslog起動、自動起動設定
# /etc/init.d/rsyslog start Starting system logger (rsyslog): [ OK ] # /etc/init.d/rsyslog status rsyslogd (pid 10557) を実行中... # chkconfig rsyslog on # chkconfig --list rsyslog rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
確認
# logger hogehoge # tail -1 /var/log/messages Nov 30 17:37:48 HOST01 USER: hogehoge
ちなみに、
Fedoraは8、Ubuntuは9.10から標準でrsyslogを採用している
CesntOS、RHELはyumで入れられるがバージョンが古い(3系)
OpenSUSEは標準で5系を採用