pgpool_connections
対象サーバで動いているpgpoolは pgpool-II 3.2.5で、munin用のプラグインは github.com/vpetersson/munin_pgpool にあったやつなんですが、中身がPythonで、pcp_pool_statusコマンドの実行結果を取得するのに subprocess.check_output()が使われていました。動かなかった理由は、このcheck_output()がPython 2.7から実装されたものらしく、サーバの/usr/bin/pythonは2.6.6であることでした。
/usr/share/munin/plugins/pgpool_connections
サーバにPython 2.7をソースビルドして入れるかどうしようかというところですが、プラグインのソースコードが短いので、雑なパッチを書いて当てる事にしました。Python 2.7より古い場合は subprocess.Popen を使う事にしました。あと、@author "名前"でSyntax Errorが出るのですが、これが何かわからん(Javadocのあれ?)のでそれも無視するようにしたのと、pcp_pool_statusコマンドが$PATHのディレクトリ以外に入っているので、プラグインの設定ファイルで "pcppath" を定義する事にしてます。他の変数も定義されていないと動かないプラグインなので、変数が一個増えるぐらいならって考えです。
/etc/munin/plugin-conf.d/pgpool
プラグインの設定ファイルで、実行されるpcp_pool_statusコマンドの位置を定義する事にしました。最初は os.environ['PATH'] += ':/path/to/dir' でよいかと思ったのですが、環境によってどのPATHに入ってるのかわからんので、コマンドの位置を定義する事にしています。
本来ならPull-Requestでもしておけばよいと思いますが、Python書くのが二回目で@authorとかpcppathとか本筋でない変更も入れたパッチなので、またたちまち値を取得する事を目的としているのでIssuesに書くだけにしておきました。
作者とやり取りしてPull-Requestしてパッチが取り込まれました。
返信削除https://github.com/vpetersson/munin_pgpool/pull/2