Mackerel にはユーザ定義のメトリックが簡単に投稿できるようだから何かプラグインでも書いてみようかなと思ったのだけど、そういえば Sensu 互換の出力だったなと思い出し楽をするために Sensu Community Plugins を使ってみた。今回は nginx の wainting や active_connections の値を投稿してみることにする。
まず github から clone して bundle install する。
git clone https://github.com/sensu/sensu-community-plugins
cd sensu-community-plugins
bundle install --path=vendor/bundle
次に、使いたいプラグインに必要な引数を見てみる。今回だったらこのあたり。--url
で nginx_status の URL を直接指定するか --host
--port
--statspath
をそれぞれ指定する。
Mackerel エージェントの設定ファイルに登録するための簡単なシェルスクリプトを書く。rbenv とか bundler の流儀がよくわかってないけどこんなのでいいはず。
#!/bin/bash
PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
cd path/to/sensu-community-plugins
bundle exec plugins/nginx/nginx-metrics.rb -u http://127.0.0.1/nginx_status
これを実行するとメトリックが出力される。
localhost.nginx.active_connections 20 1404382449
localhost.nginx.accepted 677130 1404382449
localhost.nginx.handled 677130 1404382449
localhost.nginx.handles 1965703 1404382449
localhost.nginx.reading 0 1404382449
localhost.nginx.writing 6 1404382449
localhost.nginx.waiting 14 1404382449
ちなみに上記の --url
等の他に --schema
というオプションもあってこれを指定すると出力するメトリックの localhost.nginx
の部分を指定できるのでグラフに表示されるラベルをいじることができる。
最後に Mackerel エージェントの設定ファイルに設定を追加する。
[plugin.metrics.nginx]
command = "/path/to/mackerel-nginx.sh"
type = "metric"
しばらく待つとめでたく Mackerel にグラフが表示される。
感想
特にはまることもなくとても簡単にメトリックが追加できて便利だった。まだまだたくさんプラグインがあるようなので色々ためしてみようと思う。