#背景
JINS MEMEにより、ボコボコ 生データが取れるようになったので、あまり手を付けていなかった時系列DBを試してみる。
#情報ソース
最新は2.0系でこちら。
WSLでインストールすると1.6が入ったので、情報としてはおそらくこちら。
#WSLへのインストール
2021/10/17 私の環境のWSL。古いバージョンを使用してる場合などは以下に表示されるように'wsl --update'で更新しておいたほうが良いでしょう。
# wsl --status
既定の配布: Ubuntu2
既定のバージョン: 2
Linux 用 Windows サブシステムの最終更新日: 2021/10/08
Windows Subsystem for Linux カーネルは、'wsl --update' を使用して手動で更新できますが、システム設定が原因で自動更新が発生することはありません。
カーネルの自動更新を受け取るには、 Windows Update の設定を有効にしてください:' Windowsの更新に、その他のMicrosoftの製品の更新情報を受け取る'。
詳細については、 https://aka.ms/wsl2kernel.
を参照してください
カーネル バージョン: 5.10.60.1
InfluxDBをインストールする。
> sudo apt install influxdb influxdb-client -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
influxdb influxdb-client
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 8049 kB of archives.
After this operation, 28.7 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu groovy/universe amd64 influxdb amd64 1.6.4-2ubuntu1 [5476 kB]
Get:2 http://archive.ubuntu.com/ubuntu groovy/universe amd64 influxdb-client amd64 1.6.4-2ubuntu1 [2573 kB]
Fetched 8049 kB in 3s (3116 kB/s)
Selecting previously unselected package influxdb.
(Reading database ... 47169 files and directories currently installed.)
Preparing to unpack .../influxdb_1.6.4-2ubuntu1_amd64.deb ...
Unpacking influxdb (1.6.4-2ubuntu1) ...
Selecting previously unselected package influxdb-client.
Preparing to unpack .../influxdb-client_1.6.4-2ubuntu1_amd64.deb ...
Unpacking influxdb-client (1.6.4-2ubuntu1) ...
Setting up influxdb-client (1.6.4-2ubuntu1) ...
Setting up influxdb (1.6.4-2ubuntu1) ...
Adding system user `influxdb' (UID 112) ...
Adding new user `influxdb' (UID 112) with group `nogroup' ...
Not creating home directory `/var/lib/influxdb'.
Adding group `influxdb' (GID 119) ...
Done.
Adding user `influxdb' to group `influxdb' ...
Adding user influxdb to group influxdb
Done.
Created symlink /etc/systemd/system/influxd.service → /lib/systemd/system/influxdb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/influxdb.service → /lib/systemd/system/influxdb.service.
invoke-rc.d: could not determine current runlevel
Processing triggers for systemd (246.6-1ubuntu1.7) ...
Processing triggers for man-db (2.9.3-2) ...
最後のほうに書いてくれていますが、systemdの設定もしてくれているようです。
サービス状態を確認して、起動していなければ(していないと思うが)起動しましょう。
# service influxdb status
* influxd is not running
root@DESKTOP-UIMJQCQ:~# service influxdb start
* Starting database influxd [ OK ]
root@DESKTOP-UIMJQCQ:~# service influxdb status
* influxd is running
#動作確認
この辺に従って、最初の確認などをします。(めちゃくちゃ丁寧な記載だ。みならいたい)
このprecisionオプションはタイムスタンプのフォーマットをrfc3339(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)にするということらしい。
$ influx -precision rfc3339
つづいてDatabase作成
> CREATE DATABASE mydb
>
> show databases
name: databases
name
----
_internal
mydb
> USE mydb
Using database mydb
通常のデータベースでいうところのTableがmeasurementとなるようです。
で、レコード作成は最初にmeasurementを指定して、あとは=でfield-keyと値を指定すると。
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
こんな感じ。確かに作成されていることが確認できます。
> INSERT cpu,host=serverA,region=us_west value=0.64
> SELECT "host", "region", "value" FROM "cpu"
name: cpu
time host region value
---- ---- ------ -----
2021-10-17T05:55:04.498741763Z serverA us_west 0.64
#データ投入
NiFiの詳細は飛ばしますが、NiFiにはfluxdbのデータ入出力機能があり簡単にデータ投入が可能です。