rsyslog-pgsql を使ってみた (2)

前回は、ユーザー postgres で書込みをしていたのだが、これはセキュリティ的にアレなので、きちんとユーザーを作ることにした。ユーザーとして、 rsyslogusr1 を作成し、データベース Syslog の全テーブルのアクセス権限を与えた。

ユーザー作成

$  createuser -P rsyslogusr1
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n


Linux上でのユーザー作成無しに認証ができるよう、pg_hba.conf を編集 (md5 だと、 psql でパスワード指定可)

> host    all         all         127.0.0.1/32          ident sameuser
< host    all         all         127.0.0.1/32          md5

権限設定

$ psql -c "grant all on systemevents to rsyslogusr1; " Syslog
GRANT
$ psql -c "grant all on systemevents_id_seq to rsyslogusr1; " Syslog
GRANT
$ psql -c "grant all on systemeventsproperties_id_seq to rsyslogusr1; " Syslog
GRANT
$ psql -c "grant all on systemeventsproperties to rsyslogusr1; " Syslog
GRANT

rsyslog.conf の設定確認として、実際にsyslog に書込みを行い、DBに書込みが行われているかどうかを確認する。

$ logger -p daemon.warn aaa
$ psql -c "select * from systemevents;" Syslog

SELECT文の結果に、 aaa の文字が見えれば成功である。


与えられたテーブルでは、 syslog の日付が timestamp 型として与えられていたので、当初の予定通り、インデックスをつけてみた。ある程度量が貯まってから、検索速度を確認してみたい。

Syslog=# CREATE INDEX receivedat_index ON systemevents(receivedat);
CREATE INDEX

なお、この状態だと量が増えた際のログローテートができないため、対策として、Partitioning を試してみたいと思う。また、ログの中から素早く必要な内容を探すため、全文検索も試してみたい。/var/log 以下にもログは出すように設定しているため、多少ログが壊れても問題は無い ww

最終的にはNagios との連携が目標だが、しばらくはデータベースの扱いが話題になりそうだ。 Slony-I に続き完全にデータベースがブログの中心となりつつあるが、、、まあいいだろう。。 ww