CentOS 5.5には、rsyslog、rsyslog-mysql、rsyslog-pgsqlなどのパッケージが
含まれており、syslogのログメッセージをRDBMSに簡単に記録することが可能になっています。
なお、RHEL6からは標準のsyslog機能がrsyslogになるようです。
以下はrsyslog-mysqlを利用するための手順です。
まず、rsyslogとrsyslog-mysqlパッケージをインストールします。
# yum install rsyslog rsyslog-mysql
標準のsyslogを停止し、自動起動を無効にします。
# /sbin/service syslog stop
# /sbin/chkconfig syslog off
mysql-serverパッケージがインストールされていない場合は、インストールします。
# yum install mysql-server
MySQLのサービスを起動します。
# /sbin/service mysqld start
MySQLに、ログ記録用のDBを作成します。
DB作成用のSQLは、/usr/share/doc/rsyslog-mysql-3.22.1/createDB.sqlに用意されています。
# mysql -u rootWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> source /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql
Query OK, 1 row affected (0.00 sec)
Database changed
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.01 sec)
データーベースとして、「Syslog」が作成されます。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
syslogユーザー権限に、Syslogデータベースへの全権限を与えます。
mysql> grant all privileges on Syslog.* to syslog@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges
mysql> quit
/etc/rsyslog.confをMySQLに全てのログメッセージを送るように、以下の内容に変更します。
-----
$ModLoad ommysql.so
*.* :ommysql:localhost,Syslog,syslog,password
-----
上記の設定内容では、localhostサーバーのMySQLのSyslogデータベースに、syslogユーザー(パスワード:password)で接続するという内容になります。
パスワードが記載されていますので、ファイルのモードを変更しておきます。
# chmod 600 /etc/rsyslog.conf
設定完了後、rsyslogサービスを起動します。
# /sbin/service rsyslog start
loggerコマンドで、syslogメッセージを記録してみます。
メッセージを確認するため、DBの内容を確認します。
# mysql -u syslog Syslog -p
Enter password: ******** ← syslogユーザーのパスワード
mysql> select ReceivedAt,Message from SystemEvents;
+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ReceivedAt | Message |
+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 2010-10-15 09:39:04 | [origin software="rsyslogd" swVersion="3.22.1" x-pid="11773" x-info="http://www.rsyslog.com"](re)start |
| 2010-10-15 09:39:04 | 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 -c3 as the first rsyslogd option. |
| 2010-10-15 09:39:04 | Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad imuxsock |
| 2010-10-15 09:39:09 | TEST Messages |
+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
以上のように、rsyslogを使うことで、MySQLにsyslogメッセージを格納することができるようになりました。