Tags

By year

  1. 2014 (28)

Sensu の InfluxDB Extension を使ってみた

InfluxDB Sensu AWS

Posted on Apr 22


はじめに

  • Sensu から InfluxDB を扱えるようなので試してみる
  • プラグインだとばかり思っていたら Extension not a handler と書かれていました…
  • ということで初めて Extension を使ってみる
  • 検証の環境は全て AWS 上に構築した

Sensu の Extenstion

ドキュメントは下記。

今回も Powered by Google 翻訳 だが、Extension は下記のようなもののようだ。

  • SensuEventMachine 内の処理で実行される
  • 大量のデータに対して HandleMutate するのにオススメのようだ

設定等

事前に…

  • InfluxDB 側で sensu というデータベースを作っておく

github

ソースコードは以下に公開されている。

ちなみに sensu から取り扱う場合には influxdb とかではなく influx と設定したりするので注意。

インストール

プラグインと同様にダウンロードして権限設定したいところだが、extensions にダウンロードする。

cd /etc/sensu/extensions
sudo wget https://raw.githubusercontent.com/lusis/sensu_influxdb_handler/master/influx.rb
sudo chmod 755 influx.db

設定

まずは MetricsExtension としての設定を /etc/sensu/conf.d 以下に metrics.json というファイル名で設置する。

{
  "handlers": {
    "metrics": {
      "type": "set",
      "handlers": [ "debug", "influx"]
    }
  }
}

次に Extension 自身の設定(InfluxDB のホストや認証情報等)を /etc/sensu/conf.d/influx.jsonに設定する。

{
  "influx": {
    "host": "localhost",
    "port": "8086",
    "user": "root",
    "password": "root",
    "database": "sensu"
    //"strip_metric": "somevalue"
  }
}

メトリクスを採りたい監視項目の設定

今回は Load Average のメトリクスを採りたいので以下のプラグインを利用する。

  • load-metrics.rb

/etc/sensu/plugins/ 以下にダウンロードして権限を付ける。

wget -O /etc/sensu/plugins/load-metrics.rb https://raw.github.com/sensu/sensu-community-plugins/master/plugins/system/load-metrics.rb
chmod 755 /etc/sensu/plugins/load-metrics.rb

そして /etc/sensu/conf.d 以下に check_load.json というファイル名で以下を作成する。

{
  "checks": {
    "load_metrics": {
      "type": "metric",
      "handlers": ["influx"],
      "command": "/etc/sensu/plugins/load-metrics.rb",
      "subscribers": [
        "test"
      ],
      "interval": 10
    }
  }
}

設定が終わったら sensu-server を再起動する。

/etc/init.d/sensu-server restart

再起動すると以下のようなログが出力される。

{"timestamp":"2014-04-23T07:13:49.954990+0900","level":"info","message":"loaded extension","type":"handler","name":"influx","description":"outputs metrics to InfluxDB"}

また、正常にメトリクスを送っている場合には下記のようなログも出力される。

{"timestamp":"2014-04-23T07:14:54.290269+0900","level":"info","message":"handler extension output","extension":{"type":"extension","name":"influx"},"output":"InfluxDB: Handler finished"}

InfluxDB を見てみる

Data Interface から

早速、InfluxDBData Interface からクエリを投げてみる。seriessensu で設定した check_load.jsonload_metrics が定義されている。

また、下記の値が InfluxDB に登録されることになる。

  • host
  • metric
  • value

以下のようなクエリを投げることでメトリクスが取得出来る。

以下のようなクエリを投げることでメトリクスが取得出来る。

実行すると…以下のようにグラフが表示された!

おお。


todo

  • 後で GrafanaTasseo で見てみる
  • influxdb-cli という CLI ツールがあるようなので試してみる
  • もすこし InfluxDB に入ったデータをちゃんと見てみる


2014 かっぱのほげふが