Unix系OSで昔から導入されているシスログデーモン「syslogd」に変わるシスログとして、CentOS6からは標準で「rsyslog」が導入されています。今更かもしれませんが、rsyslogについて少し掘り下げて調べてみたので、記録しておきます。
rsyslog の機能
rsyslogの「r」は「reliable(信頼できる)」から取っているようで、以下の機能が特筆されています。
- UDPよりもプロトコル的に信頼性の高いTCPを利用可能
- モジュール追加による機能拡張(メール送信やDBへのログ保存など)
- テンプレートやマクロを利用したsyslogファイルの詳細な制御
rsyslog の稼働状況確認、バージョンアップ
私のCentOS6.2環境では、rsyslog 4.6.2 が導入されていました。
# rpm -qa |grep syslog rsyslog-4.6.2-12.el6.x86_64 # # rpm -qi rsyslog Name : rsyslog (省略) Version : 4.6.2 (省略) # # /sbin/rsyslogd -v rsyslogd <strong>4.6.2</strong>, compiled with: FEATURE_REGEXP: Yes FEATURE_LARGEFILE: No FEATURE_NETZIP (message compression): Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No Atomic operations supported: Yes Runtime Instrumentation (slow code): No See http://www.rsyslog.com for more information. #
プロセス状況は以下の状態でした。
# ps -awef|grep syslog | grep -v grep root 1069 1 0 May04 ? 00:03:45 /sbin/rsyslogd -i /var/run/syslogd.pid -c 4 #
rpm で新しいバージョン「5.8.10」にバージョンアップが可能な状態でしたので、バージョンアップしました。
# yum info rsyslog (省略) <strong>Installed Packages</strong> Name : rsyslog Arch : x86_64 Version : 4.6.2 (省略) <strong>Available Packages</strong> Name : rsyslog Arch : x86_64 Version : 5.8.10 (省略) # # yum update rsyslog (省略) Updated: rsyslog.x86_64 0:5.8.10-2.el6 Complete! #
以上でアップデート処理が終わりました。
バージョンアップ結果として、以下の各種確認コマンドで、問題がない事を確認します。(表示結果は省略します。)
# rpm -qa | grep rsyslog # yum info rsyslog # ps -awef|grep rsyslog | grep -v grep # /sbin/rsyslogd -v
念の為、再起動して問題ない事と、/var/log/messages も確認しておきます。(表示結果は省略します)
# ps -awef|grep syslog|grep -v grep # /etc/init.d/rsyslog stop # /etc/init.d/rsyslog start # tail /var/log/messages # ps -awef|grep syslog | grep -v grep
以上で、問題なくrsyslogをバージョンアップできた事が確認できました。
rsyslogのデフォルト設定
rsyslogの設定ファイルは、デフォルトでは「/etc/rsyslog.conf」になります。
MODULES
rsyslogはモジュールを利用する構成になっており、「$ModLoad」で指定されたモジュールをロードする事になります。
モジュールには「Input Modules」と「Output Modules」があります。
デフォルトでロードされているモジュールは「Input Modules」です。頭文字を取って「im***」というモジュール名になっているようです。デフォルトでは「OutputModules」は定義されていません。
- imuxsock
- unix sockets, including the system log socket
- provides support for local system logging (e.g. via logger command)
- この設定値は、どんな環境でも基本的に必要になる設定値になると思います。
- imklog
- kernel logging
- Reads messages from the kernel log and submits them to the syslog engine.
- provides kernel logging support (previously done by rklogd)
- この設定値は、どんな環境でも基本的に必要になる設定値になると思います。
- immark
- デフォルトではコメントアウトされています。
- support for mark messages
- provides –MARK– message capability
- imudp
- デフォルトではコメントアウトされています。
- 他ノードからのsyslogメッセージを受け付けない場合は不要な設定値です。
- udp syslog message input
- UDPではなくTCPを使う場合は、後述の「imtcp」を使います。
- imtcp
- デフォルトではコメントアウトされています。
- 他ノードからのsyslogメッセージを受け付けない場合は不要な設定値です。
- input plugin for tcp syslog
- 他ノードからのsyslogメッセージを受け付ける際に、信頼性の高いTCPを利用したい際に利用します。TCPポート指定は「InputTCPServerRun」でポート番号を指定します。
GLOBAL DIRECTIVES
rsyslogで出力するメッセージでの timestampフォーマットや、「/etc/rsyslog.conf」以外の設定ファイルのインクルード設定が定義されています。
RULES
今までのsyslogと同じです。
設定ファイル「/etc/rsyslog.conf」のチェック
rsyslog.conf を編集した場合は、以下のコマンドで文法チェックが可能です。
# /sbin/rsyslogd -N 1 -c5
※ 「-c」の部分は、rsyslogバージョンを指定する形になります。
loggerコマンド
loggerコマンドを使って、rsyslogへのメッセージ送付が可能です。テスト用途などでも使えます。
以下がコマンド実行例です。
# logger -p user.info "TEST Message" (ファシリティ:user、プライオリティ:info を指定したテスト) # logger -p mail.info "TEST Message" (ファシリティ:mail、プライオリティ:info を指定したテスト)
それぞれの実行結果の確認は、rsyslog.conf で設定されたファイルで「TEST Message」文字列が出力されている事を確認できれば良いです。
備考
デフォルトでは、今までのsyslogとほぼ同じ設定になっているかと思います。
rsyslogでは、デフォルト設定値以外に、様々な設定ができます。設定方法についての記載は、別の機会にしたいと思います。