sensu-pluginとInfluxDBとGrafanaで簡単Metrics監視


sensu-pluginを使ってMetricsを取得しGrafanaで表示してみます。

環境

Ubuntu 14.04

(今回はsensu-server, sernsu-client, InfluxDB, Grafana全部1つのサーバでやってます)

InfluxDB

公式ドキュメントの通りにインストールしていきます。

$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/lsb-release
$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
$ sudo apt-get update && sudo apt-get install influxdb
$ sudo service influxdb start

http://<サーバIP>/8083にアクセスするとInfluxDBのDashboardが表示される。

Grafana

Grafanaを動かすためにはNginxが必要なのでインストールします。

Nginxのインストール

$ sudo apt install nginx
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo mkdir -p /var/www/html
$ cat <<EOF | sudo tee /etc/nginx/sites-available/grafana
server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/html/;
        index index.html index.htm;

        server_name localhost;

        location /grafana {
                index index.html index.htm;
        }
}
EOF
$ sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
$ sudo service nginx configtest
$ sudo service nginx restart

Grafanaのインストール

$ echo "deb https://packagecloud.io/grafana/stable/debian/ wheezy main" | sudo tee /etc/apt/sources.list.d/grafana.list
$ curl https://packagecloud.io/gpg.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install grafana

http://<サーバIP>/3000にアクセスするとGrafanaのDashboardが表示される。

User=admin, Password=adminでログインすることができる。

設定

InfluxDB

公式ドキュメント通りにdatabaseを作成します。

InfluxDBのダッシュボードからも作成可能です。

Sensu

sensu pluginのインストール

sensu-installコマンドでプラグインをインストールします。
sensu-plugins-vmstatsはChecks、sensu-plugins-influxdbはHandlerを使います。

sudo sensu-install -p vmstats
sudo sensu-install -p influxdb

実行すると/opt/sensu/embeddedの中にインストールされます。

sensuの設定

Sensuの設定を追加していきます。(今回はsensu-serverとsensu-clientは同じサーバ上で動かしています)

"client": {
  "name": "localhost",
  "address": "127.0.0.1",
  "subscriptions": [
    "test"
  ]
}

Checksを追加します。commandにはsensu-plugins-vmstatsmetrics-vmstat.rbを指定します。

/etc/sensu/conf.d/vmstat_metrics.json
{
  "checks": {
    "vmstat_metrics": {
      "type": "metric",
      "handlers": [ "influxdb" ],
      "command": "metrics-vmstat.rb",
      "interval": 60,
      "subscribers": [ "test" ]
    }
  }
}

Handerを設定します。influxdbというHandlerを追加しています。
handlerのタイプをpipeにするとコマンドを実行してくれます。
commandにはsensu-plugins-influxdbmetrics-influxdb.rbを指定します。

InfluxDBの設定をUsageを参考に書きます。

/etc/sensu/conf.d/handler_influxdb.json
{
  "handlers": {
    "influxdb": {
      "type": "pipe",
      "command": "metrics-influxdb.rb"
    }
  },
  "influxdb": {
    "hosts" : ["localhost"],
    "host": "localhost",
    "port": "8086",
    "username": "root",
    "password": "root",
    "database": "metrics"
  }
}

Sensuの再起動

Sensuを再起動して設定を反映します。

$ sudo service sensu-server start 
$ sudo service sensu-client start 
$ sudo service sensu-api start 

InfluxDBで動作確認

InfluxDBのDashboardでSHOW MEASUREMENTSクエリを実行すると、measurements一覧が表示される。

  • vmstat_cpu_idle
  • vmstat_cpu_steal
  • vmstat_cpu_system
  • vmstat_cpu_user
  • vmstat_cpu_waiting
  • vmstat_io_received
  • vmstat_io_sent
  • vmstat_memory_buffers
  • vmstat_memory_cache
  • vmstat_memory_free
  • vmstat_memory_swap_used
  • vmstat_procs_uninterruptible
  • vmstat_procs_waiting
  • vmstat_swap_in
  • vmstat_swap_out
  • vmstat_system_context_switches_per_second
  • vmstat_system_interrupts_per_second

適当にmeasurementを選んでSELECT * FROM <measurement名>を実行してちゃんとデータが入っているか確認します。

Grafanaに表示を追加

GrafanaにDashboardを追加します。

DataSourcesを追加

DataSourceにInfluxDBを追加します。
左上のGrafanaアイコンからDataSource選択。Add data sourceボタンを押します。

Field Value
Name development 適当につける
Default True defaultにしておくと楽
Type InfluxDB
Url http://localhost:8086
Access proxy
Database metrics 作成したDatabase名
User root
Password root

設定したらSaveボタンを押します。

Dashboardを追加

左上のGrafanaアイコンからDashboard > Newで追加する。
左の緑のバーからAdd Panel > Graphを選択します。
MetricsのQueryを弄って好きなようにデータを表示します。
上にある保存ボタンを押して完了。

できた

参考