Posted on Apr 23
Sensu の監視メトリクスを Extension を利用して InfluxDB に登録することが出来たので登録出来たメトリクスを見てみる。InfluxDB 自身でもグラフ表示が可能で以下のようにクエリの結果を表示することが出来るが無理をさせてしまうとブラウザが重くなってしまったりで使い勝手はイマイチな印象。

以下で紹介されていたので試してみた。可視化は GUI だけではない…(と思う
インストールには nodejs が必要になるので nodejs をインストールするところから始める。
sudo yum install -y nodejs npm --enablerepo=epel
そして npm コマンドを利用してインストールを進める。
sudo npm install influxdb-cli -g
インストールが完了すると以下のようにアクセスする。
influxdb-cli -d ${データベース}
influxdb-cli のコマンドオプションは下記の通り。

ちょっと使ってみる。
Sensu のメトリクスデータを突っ込んでいるデータベースにアクセスしてみる。
influxdb-cli -d sensu
以下のように表示される。

適当にクエリを投げてみる。既にメモリの使用量についても sensu からメトリクスを送っている状態なので以下のような感じでクエリを投げる。
select * from memory_metrics limit 5
以下のように表示される。

ちょっと where 句を使って条件を絞ってみましょか。
select * from memory_metrics group by time(1m) where metric =~ /.*ec2.internal.memory.used$/ limit 5
以下のような結果が出力される。

おお。ポイントとしては…
group by time(1m) でメトリクスデータから 1 分毎を抽出where metric =~ で正規表現を使って metric から該当する条件で抽出上記のように group by time($interval) や where を利用して条件を絞った結果を得られることが出来る。
また、おもろいなあと思った機能が上記のようなクエリを登録しておくことが出来る Continuous Queries という機能。RDBMS で言うところのトリガー、ビューとかかな。
以下のように into ${Query Name} を使って登録する。
select * from memory_metrics group by time(1m) where metric = 'ip-xxx-xxx-x-xxx.ec2.internal.memory.used' into memory_metrics.used.1m
登録した内容は list continuous queries で確認することが出来るし、削除は drop continuous query ${id} で削除することが出来る。登録と list continuous queries の流れは下記の通り。

尚、イジった感じだと下記のような点に注意。
group by time は必要where = metric は正規表現は使えないっぽい登録したクエリでデータの抽出をやってみる。
select * from memory_metrics.used.1m limit 5
以下のような結果が得られる。おお。

ついでにブラウザでも登録したクエリを試してみると以下が表示された。

驚いてばかりだったけど疲れてきたので Grafana とか Tasseo での可視化はまたこんど。
InfluxDB まだわからん2014 かっぱのほげふが