muninでpostgres監視

muninすげーカンタンでいいね!
cactiわけわかめになりながら何時間もかけて設定したのがアホらしい。
もちろんcactiより出来ることは少ないけど、情報としては十分。


で、postgresの監視しようと思ったら
思ったより手間取ったのでメモメモ。

プラグインを探す

まず、ここがpluginの一覧らしいのでpostgresで検索してみた。
http://muninexchange.projects.linpro.no/
更新日付古いし微妙なかんじ。というか設定の方法もよくわからん。


で、しばらくwebをさまよっていると以下のページ発見!
全然わからなかったコンフィグの書き方も載ってるし!
http://d.hatena.ne.jp/at_yasu/20081108#p2



ダウンロードしてみるが…

なるほどー、tracリポジトリ内にはあるのか。
svn co svn://munin.projects.linpro.no/munin/trunk munin
で取ってきて、解凍したmunin/plugin/node/node.dの中からpostgres*のファイルを持ってきて設定してみる。
すると
Can't locate Munin/Plugin/Pgsql.pm
みたいな言われた。


はにゃ?こんなんいるのかーと思ってcpan探したけど見つからず、
取得したソースのlibを@INCが見えてるところに置いて
テスト実行してみました。

munin-run postgres_connections_

するとメッセージ自体は表示されたのでうまく行ってるのかなーと思いましたが
グラフにはうまく表示されず…
てかメッセージをよくよくみると、なんか微妙なメッセージな気が*1


もう少し調べてみると、もしかしたらバージョンが違うから互換がとれてないのでは?と思い始める。
で、trac内のtagバージョンを調べてみると、最新が「1.4.3」。
で、サーバにインストールしたmuninのバージョンが「1.2.5」。*2


全然違うやん!( ゚Д゚)



さらに探す

でも参考にしたブログを拝見すると、postgres用のプラグインはあるみたいだよなー。
で、tracリポジトリ内を確認してみると、
「root/tags/1/2/5/node/node.d」内にはない。
「root/tags/1/2/6/node/node.d」内にもない。
「root/tags/1/4/3/node/node.d」内は、すでにperlモジュール化されている。
「root/tags/1/3/4/node/node.d」内にそれらしきのがあった!


以下のコマンドで取得。

svn co svn://munin.projects.linpro.no/munin/tags/1.3.4 munin
cd munin
make
cd build/node/node.d
ls postgres_*

上記postgres関連のプラグインを拝借して、
configとプラグイン設定したらうまく行った!(とおもう。)
やほい!

postgres_connectionsを設定した時の一例

/etc/munin/plugin-conf.d/munin-node に以下の記述を追加。

[postgres_*]
  env.PGHOST localhost
  env.PGUSER dbuser
  env.PGPASSWORD dbpassword

シンボリックリンクを設定。

ln -s /usr/share/munin/plugins/postgres_connections /etc/munin/plugins/

muninの設定をリロード。

service munin-node reload

うまく動かないプラグイン

プラグインによってはsql文が直書きしてあって、
最新のpostgresではエラーになったりするものもありました。
スクリプト見てみたらそんなに難しいことしてなさそうなので
プラグインを自分で書いちゃった方が早いかもね!


てか最新のmunin*3ではpostgres用のプラグインライブラリも用意されていて
綺麗に書かれているので、
これからインストールする人でpostgresの監視も行いたい人は
muninの最新版をソースコンパイルした方が幸せかもしれないよ!

*1:内容は忘れた

*2:yum使ってます

*3:現時点では1.4.3