概要
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
の部分をクリックすると、一覧が出るので使いたいデータを選択します。
するとグラフがそのデータに変更されました。
このような形でポチポチと作ります。
作ったダッシュボードの設定はエクスポート可能です。
以上、お疲れ様でした。