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