at_yasu's blog

ロード的なことを

Postgresを監視

何か去年まではPostgresのスクリプトが無かったみたいですけど、今はsvnのtrunkにマージされています。採集のアップデートが11ヶ月前とかなので、安定はしているみたいです。ただ、ちょっとコツがいりましたけど…


svn で取得する前に、DBI::Pgのインストールが必要です。インストールしてください。


そして、svnで取得してきてmakeだけします。インストールしません。

# svn co svn://munin.projects.linpro.no/munin/trunk munin
A    munin/RELEASE
A    munin/Makefile.config
A    munin/Makefile.config-dist
...
 U   munin
Checked out revision 1768.
# ls
./        ../       CVS/      munin/    original/
# cd munin
# ls                                                                     
./                     Makefile               RELEASE                logo.svg
../                    Makefile.config        contrib/               monkeywrench/
.svn/                  Makefile.config-dist   dists/                 node/
COPYING                Makefile.config-maint  getversion*            resources/
ChangeLog              README                 install-sh*            server/
Checklist              README.HP-UX           logo-horizontal.svg    t/
INSTALL                README.OSX             logo.eps               test-mktemp*
# make
"Makefile", line 343: Missing dependency operator
"Makefile", line 348: Need an operator
"Makefile", line 364: Missing dependency operator
"Makefile", line 368: Need an operator
"Makefile", line 374: warning: duplicate script for target "test" ignored
"Makefile", line 375: Need an operator
make: fatal errors encountered -- cannot continue
# gmake
touch build-stamp
rm -rf build
Generating build/./node/node.d.freebsd/coretemp..
...
Generating build/./resources/solaris-init.d_munin-node..
Generating build/./resources/linux-cron.d_munin-node..
# ls
./                     Makefile.config        build-stamp            monkeywrench/
../                    Makefile.config-dist   contrib/               node/
.svn/                  Makefile.config-maint  dists/                 resources/
COPYING                README                 getversion*            server/
ChangeLog              README.HP-UX           install-sh*            t/
Checklist              README.OSX             logo-horizontal.svg    test-mktemp*
INSTALL                RELEASE                logo.eps
Makefile               build/                 logo.svg
#

というわけで、buildと言うディレクトリが出来ています。この中には作成済みのプラグインとかコマンドがぎっしりかっつり入ってます。プラグインは、「build/node/node.d」に入っています。その中にある postgres-* を「/usr/local/share/munin/plugins」へコピーしませう。


さて、移動したpostgres-*の設定例

[postgres_*]
env.PGHOST localhost
env.PGUSER postgres
env.PGPASSWORD ****** 


さて動くかと言ったら、FreeBSDではこのままでは動きません。少なくとも、「postgres_queries」と「postgres_commits」はそれぞれ二カ所ほど、同じような変更が必要になります。

1c1
< #!/bin/bash
---
> #!/bin/sh
54c54
< psql_comm='psql -c'
---
> psql_comm='/usr/local/pgsql/bin/psql -c'


後はリスタートで動きます。


以下、trunkから取ってきたプラグインの事

postgres_queries
postgresサーバのクエリー数をカウント
postgres_queries_
postgresサーバにあるデータベースのクエリー数をカウント。ファイル名の最後にはデータベース名を記入します。
postgres_block_read_
メモリーやらディスクから取ってきたブロック数をデータベース単位でカウント。ファイル名の最後にはデータベース名を記入します。何か、postgres.conf で stats_start_collector と stats_block_level の値を true に設定する必要があるよんと書いてるけど本当かどうか知りません。だって、7.4 のドキュメントを参考にしてるって書いてるし…
postgres_commits_
データベース単位でのコミットを数えてくれるみたい。ファイル名の最後にはデータベース名を記入。
postgres_commits
設定で指定したサーバのコミットを数えてくれるみたい。
postgres_connections
サーバへの接続数を数えてくれる
postgres_space_
ディスクの使用量をデータベース単位で見てくれる。ファイル名の最後にはデータベース名を記入。

余談:Snortをインストールしているのですが、出力先をpostgresにしているのです。コネクションが平均2M5.73Mになってます。出すSnortも凄けりゃ耐えれるPostgresもすげぇ……

おまけにselectの実行回数が0なんだ。