Posted at

Sensu Community Plugins を使って Mackerel にユーザ定義メトリックを投稿する

More than 5 years have passed since last update.

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 の流儀がよくわかってないけどこんなのでいいはず。


mackerel-nginx.sh

#!/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 エージェントの設定ファイルに設定を追加する。


/etc/mackerel-agent/mackerel-agent.conf

[plugin.metrics.nginx]

command = "/path/to/mackerel-nginx.sh"
type = "metric"

しばらく待つとめでたく Mackerel にグラフが表示される。


感想

特にはまることもなくとても簡単にメトリックが追加できて便利だった。まだまだたくさんプラグインがあるようなので色々ためしてみようと思う。