概要
Sensuはサーバを監視してアラートを鳴らすことはできますがそのデータを可視化することはできません。
なのでそれを可能にするGrafanaを扱います。
環境
- Ubuntu 14.04
- Sensu 0.21.0
- InfluxDB 0.9.6
- Grafana 2.5.0
サーバ構成
| サーバ | IP |
|---|---|
| Sensu-Server | 192.168.33.100 |
| Sensu-Client | 192.168.33.101 |
| Grafana、InfluxDB | 192.168.33.103 |
時系列DBのインストール
今回はInfluxDBを使います。
$ wget https://s3.amazonaws.com/influxdb/influxdb_0.9.6_amd64.deb $ sudo dpkg -i influxdb_0.9.6_amd64.deb
最初から自動起動が入っています。
起動します。
$ sudo service influxdb start
今回可視化するためのDatabaseを作成しておきます。
$ influx > CREATE DATABASE vmstat
Grafanaインストール
レポジトリの登録
$ echo "deb https://packagecloud.io/grafana/stable/debian/ wheezy main" | sudo tee /etc/apt/sources.list.d/graphana.list $ curl https://packagecloud.io/gpg.key | sudo apt-key add -
インストール
$ sudo apt-get update $ sudo apt-get install grafana
起動し、自動起動設定をしておきます。
$ sudo service grafana-server start $ sudo update-rc.d grafana-server defaults 95 10
動作確認
http://192.168.33.103:3000/login
にアクセスします。ID, PWはadminです。

初期画面はこんな感じです。

Sensuとの連携
クライアント側
プラグインインストール
今回はvmstatの値を可視化してみます。
$ sudo sensu-install -p vmstats
/etc/sensu/config.json
設定を追加。
{
"client": {
"name": "client1",
"address": "localhost",
"subscriptions": [
"vmstat"
]
}
}
終わったら再起動
$ sudo service sensu-client restart
サーバ側
フォルダ構造
. ├── conf.d │ ├── checks │ │ └── metrics_vmstat.json │ ├── handlers │ │ └── metrics.json │ └── influxdb.json ├── config.json ├── extensions │ └── influxdb.rb ├── handlers ├── mutators └── plugins
/etc/sensu/conf.d/checks/metrics_vmstat.json
{
"checks": {
"metrics_vmstat": {
"type": "metric",
"handlers": [ "metrics" ],
"command": "metrics-vmstat.rb",
"interval": 10,
"subscribers": [ "vmstat" ]
}
}
}
handlersをmetricsという自作のハンドラーに設定します。
handlerはEvent Dataを受け取ったときに,何か特別なことをさせたいときに使用します。例えばアラートを送信したり、データを他のプログラムに渡したりなどです。
influxDBへ流す設定
influxdbへデータを送るためのスクリプトを設定します。
$ cd /etc/sensu/extensions $ sudo wget https://raw.githubusercontent.com/seegno/sensu-influxdb-extension/master/influxdb.rb $ sudo chmod 755 influxdb.rb
また、依存ライブラリをインストールしておきます。
$ sudo /opt/sensu/embedded/bin/gem install em-http-request
/etc/sensu/conf.d/handlers/metrics.json
先ほど指定していた自作ハンドラーmetricsの設定です。
{
"handlers": {
"metrics": {
"type": "set",
"handlers": [ "debug", "influxdb"]
}
}
}
/etc/sensu/conf.d/influxdb.json
influxdbへ接続するための設定です。
{
"influxdb": {
"host": "192.168.33.103",
"port": "8086",
"user": "root",
"password": "root",
"database": "vmstat"
}
}
終わったら再起動します。
$ sudo service sensu-server restart
動作確認
ちゃんとinfluxDBに流し込まれているか確認します。
{"timestamp":"2015-12-11T04:08:12.010333+0000","level":"info","message":"handler extension output","extension":{"type":"extension","name":"influxdb"},"output":"","status":0}
成功していればstatus:0が返ってきます。また
でアクセスできるWebコンソール上でも以下のようにデータが保存されていることが分かります。

Grafanaダッシュボード設定
データベースの登録
左メニューから

以下のように登録します。

ダッシュボードの作成
新しいダッシュボードを作成します。

左の黄緑色のハンバーガーメニューをクリックし、パネルを追加します。

サンプルデータのグラフが生成されます。

vmstatの可視化
これはサンプルデータのグラフなので、InfluxDBのデータに変更します。
グラフのno titleのところをクリックしてeditします。

下部にメニューが出てくるので、Metricsタブを開きます。

Datasourceが未設定なので設定します。

FROM select measurementの部分をクリックすると、一覧が出るので使いたいデータを選択します。

するとグラフがそのデータに変更されました。

このような形でポチポチと作ります。
作ったダッシュボードの設定はエクスポート可能です。
以上、お疲れ様でした。