概要
InfluxDB は時系列データを格納し専用の SQL でデータを取得したり専用の UI でグラフを表示したりすることができるツールです
ElasticSearch みたいなツールです
golang でかかれており Github でオープンソースとして公開されています
今回は macOS 上に influxdb をインストールし簡単なデータの登録や取得を行ってみました
環境
- macOS X 10.12.6
- influxdb 1.3.1
インストール
Mac の場合 Homebrew で簡単にインストールすることができます
- brew install influxdb
インストールできたら以下のコマンドでバージョンが確認できれば OK です
- influx -version
InfluxDB shell version: v1.3.1
influxQL で遊んでみる
influxdb には influxQL と呼ばれる独自のクエリ言語を発行することでデータを操作することができます
まずは influxQL が発行できるモードに変更します
- influx -precision rfc3339
「-precision rfc3339」オプションを指定することでタイムスタンプのフォーマットを「YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ」にすることができます
データベース作成
まずはデータベースを作成しましょう
この辺は MySQL などと同じ操作かなと思います
- CREATE DATABASE mydb
コマンドの部分は大文字でも小文字でもどっちでも OK です
データベースが作成されたか確認して問題なければデータベースを使用します
- SHOW databases
- USE mydb
データ投入
そしたら早速データを追加してみます
- INSERT cpu,host=server1,region=us_west value=0.64
ここが少しクセのあるコマンドになります
フォーマットは
INSERT measurement,tag_key1=tag_value1,tag_key2=tag_value2 value=n
になります
measurement は所謂テーブルになります
そしてその次にある tag_key と tag_value はカラムとそのカラムに設定する値になります
意味合いとしてタグになるので基本的には文字列情報を設定します
そして 1 つスペースを開けて value=n で数値情報を設定します
この部分は必ず数値である必要があります
今回は value は 1 つしか指定していませんが、value もカンマ区切りで複数していすることができます
- INSERT temperature,machine=unit42,type=assembly external=25,internal=37
結構フォーマットがシビアで measurement のあとのカンマの後にスペースなどは含められません
タグ情報が複数ある場合のカンマの後にもスペースを含めることはできません
データ取得
データが格納できたら取得してみましょう
- SELECT * from cpu
ですべてのタグ情報と値の情報が取得できます
name: cpu
time host region value
---- ---- ------ -----
2017-08-03T06:44:04.126616931Z server1 us_west 0.64
2017-08-03T07:22:28.122064267Z server2 us_west 0.99
もちろん表示するタグ情報を絞り込むこともできます
- SELECT region, value FROM cpu
name: cpu
time region value
---- ------ -----
2017-08-03T06:44:04.126616931Z us_west 0.64
2017-08-03T07:22:28.122064267Z us_west 0.99
データの削除と更新
ついでにデータの削除もやってみましょう
DELETE FROM cpu WHERE host='server1'
という感じで消せます
更新 (UPDATE) に関してはコマンドがないようで INSERT を使うことで上書きすることができるようです
- INSERT cpu,host=server2,region=us_west value=0.99 1501746397569246614
フォーマットは普通の INSERT コマンドの最後にスペースで区切って time を指定します
time の指定方法はデフォルトのタイムスタンプ方式なので「-precision rfc3339」を指定しないで influx コマンドを使うことで確認できます
もしくはインタラクティブモードで
- precision ns
とすることでタイムスタンプのフォーマットをデフォルトに変更することができるのでこれで SELECT し直しても良いと思います
再度フォーマットを rfc3339 にしたい場合は
- precision rfc3339
へ戻すことができます
クエリ中で正規表現を使う
またクエリ中に golang の正規表現を使用することができます
SELECT * FROM /.*/
上記の場合すべての measurement に対して SELECT 文を発行することができます
管理 UI について
どうやら InfluxDB 1.3 からはデフォルトで付属していた管理 UI がなくなったようです
- https://docs.influxdata.com/influxdb/v1.3/administration/differences/#web-admin-ui-removal
- https://docs.influxdata.com/influxdb/v1.3/tools/web_admin/
代わりに Chronograf という InfluxDB 専用の UI プロジェクトができたのでそれを別途インストールする必要があります
最後に
Mac 上で InfluxDB を試してみました
ダウンロードページを見るとわかりますが、さまざまなプラットフォームで簡単にインストールすることができます
Docker 環境がある人は Docker コンテナとしても動作させられるので更に簡単に動かせると思います
次回は Chronograf と連携して UI から InfluxDB の情報を見てみたいと思います
0 件のコメント:
コメントを投稿