- メトリクスを収集するのが
carbon
- データを保存しておくのが
whisper
whisper
に保存されたメトリクスを表示するのがgraphite-web
/etc/carbon/carbon.conf
/etc/httpd/conf.d/graphite-web.conf
/etc/graphite-web/
以下
carbon-cache
が利用される
/var/lib/carbon/whisper
上記のディレクトリ以下にメトリクスのルートパス毎にディレクトリが生成されている。
各種ログは /var/log/carbon
以下に出力される。
- listener.log(
tcp
接続のログ)
05/06/2014 17:33:09 :: MetricLineReceiver connection with xxx.xxx.xxx.xxx:44789 established
05/06/2014 17:33:09 :: MetricLineReceiver connection with xxx.xxx.xxx.xxx:44789 closed cleanly
- creates.log(
carbon
が初めてログを収集してwhisper
にデータベースを作成した際に出力される)
05/06/2014 22:49:13 :: new metric stats.localhost.cpu.waiting matched schema default_1min_for_1day
05/06/2014 22:49:13 :: new metric stats.localhost.cpu.waiting matched aggregation schema default
05/06/2014 22:49:13 :: creating database file /var/lib/carbon/whisper/stats/localhost/cpu/waiting.wsp (archive=[(60, 1440)]
- query.log(
whisper
への接続とクエリーのログ)
05/06/2014 23:03:59 :: 127.0.0.1:51648 connected
05/06/2014 23:04:05 :: 127.0.0.1:51305 disconnected
05/06/2014 23:04:05 :: 127.0.0.1:51649 connected
05/06/2014 23:04:17 :: 127.0.0.1:51661 connected
05/06/2014 23:05:35 :: 127.0.0.1:51301 disconnected
- console.log
事前に必要なプラグインを用意しておく。
cd /etc/sensu/plugins/
wget https://raw.githubusercontent.com/sensu/sensu-community-plugins/master/plugins/system/vmstat-metrics.rb
chmod +x vmstat-metrics.rb
cd /etc/sensu/mutators/
wget https://raw.githubusercontent.com/sensu/sensu-community-plugins/master/mutators/graphite.rb
chmod +x graphite.rb
一番簡単な連携には handler
のタイプが tcp
を利用する。
cat << EOT > /etc/sensu/conf.d/handler_graphite.json
{
"handlers": {
"graphite": {
"type": "tcp",
"socket": {
"host": "127.0.0.1",
"port": 2003
},
"mutator": "mutator_graphite"
}
}
}
EOT
また、mutator
プラグインを利用して Graphite
に保存する為に必要なメトリクスに整形する(しないとメトリクスが保存されなかった)。
cat << EOT > /etc/sensu/conf.d/mutator_graphite.json
{
"mutators": {
"mutator_graphite": {
"command": "/etc/sensu/mutators/graphite.rb"
}
}
}
EOT
事前に /etc/sensu/plugins/vmstat-metrics.rb
は用意しておいて...メトリクスプラグインの handler
に設定するだけ。
cat << EOT > /etc/sensu/conf.d/metrics_vmstat.json
{
"checks": {
"vmstat_metrics": {
"type": "metric",
"handlers": ["graphite"],
"command": "/etc/sensu/plugins/vmstat-metrics.rb --scheme stats.:::name:::",
"interval": 60,
"subscribers": [ "test" ]
}
}
}
EOT
Graphite
のグラフは正直ダサいので Grafana
を使おう。
以下のような Graphite
のデータフォーマットが利用されている。
<metric path> <metric value> <metric timestamp>
以下、vmstat-metrics.rb の出力例。vmstat-metrics.rb
を直接実行すると以下のように出力される。
9b8d3c9bd69f.vmstat.cpu.user 3 1402005112
9b8d3c9bd69f.vmstat.cpu.system 1 1402005112
9b8d3c9bd69f.vmstat.cpu.idle 96 1402005112
9b8d3c9bd69f.vmstat.cpu.waiting 0 1402005112