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 かっぱのほげふが