2010年10月15日金曜日

CentOS 5.5 で rsyslogを使ってMySQLにsyslogメッセージを書き出す

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メッセージを格納することができるようになりました。









0 件のコメント:

コメントを投稿