はじめに
InfluxDB 2.0は、InfluxData社の時系列データベースInfluxDBの次期版です。本記事執筆時点ではアルファ版がリリースされています。基本的な使い方を見ていきます。
環境
- OS: Debian 9.11
- InfluxDB: v2.0.0-alpha.20
ダウンロードと起動
ダウンロードページ からv2.0.0-alphaをダウンロード・解凍します。
現れたファイルのうち、influxd
がサーバ用実行ファイル、influx
がコマンドラインインターフェースです。
influxd
を起動します。一通りログが出力され待ち受け状態になります。
$ ./influxd
2019-11-22T07:48:02.547633Z info Welcome to InfluxDB {"log_id": "xxxxxxxxxx", "version": "2.0.0-alpha.20", "commit": "xxxxxxxx", "build_date": "2019-11-21T00:44:08Z"}
2019-11-22T07:48:02.549365Z info Resources opened {"log_id": "xxxxxxxxxx", "service": "bolt", "path": "/home/debian/.influxdbv2/influxd.bolt"}
...
初期設定
サーバへの操作はinflux
で行います。以下、サーバと同一ホスト上で実行します。最初にinflux setup
で初期設定を行います。ユーザとorganization、bucketの3点を作成します。organizationはユーザのグループ、bucketはinfluxdb v1でいうdatabaseに近い概念でしょうか。各用語については Glossary を合わせて参照して下さい。
$ ./influx setup
Welcome to InfluxDB 2.0!
Please type your primary username: your_name
Please type your password:
Please type your password again:
Passwords do not match!
Please type your password:
Please type your password again:
Please type your primary organization name: my_organization
Please type your primary bucket name: my_bucket
Please type your retention period in hours.
Or press ENTER for infinite.:
You have entered:
Username: your_name
Organization: my_organization
Bucket: my_bucket
Retention Period: infinite
Confirm? (y/n): y
Your token has been stored in /home/debian/.influxdbv2/credentials.
User Organization Bucket
your_name my_organization my_bucket
値の登録
値の登録はinflux write
を用います。引数に与える文字列の形式はv1のラインプロトコルと同じであるようです。最小限の入力として、measurement名とフィールド名、値の組が必要です。例えば以下のコマンドです。タイムスタンプの指定を省略しています。この場合、リクエスト時のサーバ時刻がタイムスタンプとして用いられます。
$ ./influx write 'my_measurement temperature=12.3'
以下は2019-11-22 00:00:00付でデータを登録する例です。時刻精度を合わせて指定しています。
$ ./influx write -p s 'my_measurement temperature=12.2 1574348400'
値の取得
値の取得はinflux query
を用います。InfluxDB v2では、クエリをFluxという独自言語で記述します。適当なファイルを作成し、以下を記述します。リクエスト時刻の24時間前より以降のデータを取得するというクエリです。
from(bucket: "my_bucket")
|> range(start:-24h)
以下のコマンドでクエリを実行します。
$ ./influx query @query.flux --org my_organization
実行結果は以下のようになります。登録した値が得られています。
Result: _result
Table: keys: [_start, _stop, _field, _measurement]
_start:time _stop:time _field:string _measurement:string _time:time _value:float
------------------------------ ------------------------------ ---------------------- ---------------------- ------------------------------ ----------------------------
2019-11-21T08:53:07.601788990Z 2019-11-22T08:53:07.601788990Z temperature my_measurement 2019-11-21T15:00:00.000000000Z 12.2
2019-11-21T08:53:07.601788990Z 2019-11-22T08:53:07.601788990Z temperature my_measurement 2019-11-22T08:22:23.218928987Z 12.3
_start:timeと_stop:timeがクエリされた時間範囲、_time:timeがデータのタイムスタンプに相当するようです。
おわりに
InfluxDB 2.0のセットアップと基本的な値の登録・取得の手順を見ました。