cloudpack の 自称 Sensu芸人 の かっぱこと 川原 洋平(@inokara)です。
Sensu とメトリクスツールはほぼ一択の Graphite について調べてまとめていきます。
Graphite
Graphite の基本
アーキテクチャ
- メトリクスを収集するのが carbon
- データを保存しておくのが whisper
- whisper に保存されたメトリクスを表示するのが graphite-web
設定ファイル
- /etc/carbon/carbon.conf
- /etc/httpd/conf.d/graphite-web.conf
- /etc/graphite-web/ 以下
尚、上記は CentOS 6.5 上に各種ツールをパッケージインストールした場合の設定ファイルのパスになるので環境に応じて読み替える必要がある。
最小構成
- carbon-cache が利用される
whisper のデータ保存先
/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
Sensu との連携
一番簡単な連携
事前に必要なプラグインを用意しておく。
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": "graphite"
}
}
}
EOT
また、mutator プラグインを利用して Graphite に保存する為に必要なメトリクスに整形する(しないとメトリクスが保存されなかった)。
{
"mutators": {
"graphite": {
"command": "/etc/sensu/mutators/graphite.rb"
}
}
}
事前に /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
Grafana との連携
Graphite のグラフは正直ダサい(笑)ので Grafana を使おう。
Sensu
メトリクスプラグインの出力フォーマット
以下のような Graphite のデータフォーマットが利用されている。
以下、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
まとめ
- 引き続き、調べたことをまとめていくどー
元記事は、こちら