LoginSignup
4
5

Linux: 時系列データに特化したDB、「InfluxDB」を無料インストールしてみた

Posted at
実施環境:
Linux
[root@testhost ~]# uname -a
Linux testhost 4.18.0-448.el8.x86_64 #1 SMP Wed Jan 18 15:02:46 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@testhost ~]# cat /etc/redhat-release
CentOS Stream release 8
[root@testhost ~]# yum list installed | grep influxdb
influxdb2.x86_64                                   2.7.3-1                                                    @@commandline

0. 概要

データベースの種類について考えるとき、最も一般的なものは RDB ( Relational Database )というデータベースです。
これはデータベースとしてよくイメージするような、「複数の表を組み合わせてデータを保管するデータベース」のことです。

WS000641.JPG

この RDB はデータの形がきっかりしているため処理がしやすく、単純な追加削除から複雑な集計までこなすことが可能です。
また、データに矛盾が生じることも防げます。
そのようなメリットがあるため、データベースとしては長らくこの RDB が主に使用されてきました。

ところが、この RDB はきれいに整理できるデータに対しては強いのですが、多様なデータや大量のデータには対応しにくいという問題があります。
さらに、データの整合性を重視する作り上、複数サーバに分散しての実行にも向いていません。
これらは、最近話題のビッグデータ分析や、クラウド環境・コンテナ環境などの分散を想定した環境を考えた場合、あまり喜ばしいことではありません。

WS000672.JPG

そこで注目されるようになってきたのが RDB 以外のデータベースであり、これを NoSQL といいます。
NoSQL には様々な種類がありますが、例えばキーバリュー型であれば「キー」と「値(バリュー)」の組み合わせでデータを表現します。
キーバリュー型は正確な検索集計には向かない一方で、構成がシンプルゆえ柔軟性が強くアクセスも高速なため、ビッグデータ分析などでしばしば使用されます。

WS000671.JPG

このように、格納するデータの特性によって、どのようにデータベースを使い分けていくのか、それが今後ますます大事になっていくことでしょう。
今回はそのような NoSQL の中でも、時刻で並んだデータ、すなわち時系列データに特化したデータベースである InfluxDB を Linux 環境にインストールしてみます。

InfluxDB

1. インストール

まずは、 InfluxDB のパッケージを GitHub からダウンロードします。
今回使用する環境は 64bit 環境なので、「 x86_64 」を使用します。

GitHub

WS000643.JPG

ダウンロードしたパッケージを Linux 上に配置し、 yum コマンドでインストールします。

Linux
[root@testhost tmp]# ls -l influxdb*
-rw-rw-r--. 1 testuser testuser 45627823 10月 23 10:37 influxdb2-2.7.3-1.x86_64.rpm
[root@testhost tmp]# yum -y install influxdb2-2.7.3-1.x86_64.rpm
メタデータの期限切れの最終確認: 0:22:21 時間前の 2023年10月23日 10時18分30秒 に 実施しました。
依存関係が解決しました。
(省略)
インストール済み:
  influxdb2-2.7.3-1.x86_64

完了しました!
[root@testhost tmp]# yum list installed | grep influxdb
influxdb2.x86_64                                   2.7.3-1                                                    @@commandline

2. 起動

インストールした InfluxDB は、 systemctl で起動できます。

Linux
[root@testhost tmp]# systemctl list-unit-files -t service | grep influxdb
influxdb.service                           enabled
[root@testhost tmp]# systemctl start influxdb.service
[root@testhost tmp]# systemctl is-active influxdb.service
active

3. ファイアウォールの穴あけ

前段で InfluxDB 自体は起動できましたが、これだとまだ接続するには十分ではありません。
ファイアウォールが起動している場合は、必要なポート番号に穴をあける必要があります。

Linux
[root@testhost tmp]# systemctl is-active firewalld
active
[root@testhost tmp]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s25
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

InfluxDB への接続で使用するポート番号は 8086 なので、このポート番号に穴をあけます。

Linux
[root@testhost tmp]# firewall-cmd --zone=public --add-port=8086/tcp --permanent
success
[root@testhost tmp]# firewall-cmd --reload
success
[root@testhost tmp]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s25
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 8086/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

4. 接続

これで、 InfluxDB に接続することができるようになりました。
ブラウザを起動し、 <IPアドレス>:8086 に接続します。
接続に成功した場合は、以下のような画面が表示されます。

WS000644.JPG

「 GET STARTED 」を押すと、以下のような初期設定画面になります。
今回はユーザ名を「 testuser 」、組織名を「 test_organization 」、バケツ名を「 test_bucket 」とします。

WS000647.JPG

これで InfluxDB を利用する準備が完了しました。
なお、この画面で表示される API トークンは後から確認しなおすことができないので、利用する場合は必ずこの画面で確認しておくようにしてください。

WS000665.JPG

「 QUICK START 」を押せば、いよいよ InfluxDB の開始です。

5. 書き込み

それでは、まずはデータの書き込みを行ってみましょう。
今回は以下の公式ドキュメントにそって進めてみます。

Write data

まずは、左端にあるメニューからデータロードボタン ⇒ 「 Buckets 」を選択します。

WS000649.JPG

次に、初期設定で作成した test_bucket について「 ADD DATA 」 ⇒ 「 Line Protocol 」を選択します。

WS000651.JPG

データの書き込み画面になりますので、以下の通りにしてデータを書き込みます。
① 「 ENTER MANUALLY 」を選択し、文字列でデータを書き込む形にします。
② 今回入力するデータは秒単位なので、右上の「 Precision 」を「 Seconds 」に変更します。
③ 先ほどの公式ドキュメントに記載されているサンプルデータを入力します。
④ 「 WRITE DATA 」を押します。

WS000654.JPG

以下のように表示されたら、書き込みは成功です。

WS000656.JPG

なお、今回書き込んだデータについてざっくり解析すると、以下のようになります。

WS000667.JPG

細かいことについてはここでは解説しませんので、先のドキュメントを参照してください。

6. 検索

次に、先ほど書き込んだデータを検索してみましょう。
今回も以下の公式ドキュメントにそって進めてみます。

Query data

まずは、左端にあるメニューからデータ検索ボタンを選択します。

WS000657.JPG

すると、以下のような検索画面が表示されます。

WS000658.JPG

クエリ文を自力で作成することもできますが、今回は GUI で検索条件を選択することにします。

まずは検索するバケツとして「 FROM 」に test_bucket を指定します。
次に、検索条件として「 Filter 」に _measurement = home を選択します。

WS000659.JPG

検索する時間範囲は、真ん中よりやや右当たりの箇所で指定します。
今回は日時を明確に指定したいので、「 Custom Time Range 」を選択します。

WS000660.JPG

すると日時が入力できるようになるので、「 Start 」に 2022-01-01 08:00:00 、「 Stop 」に 2022-01-01 20:00:01 を指定します。
:01 となっているのは、 Stop ちょうどの日時は検索対象に含まれないためです。

WS000661.JPG

うまくいけば、画面の上半分にグラフが表示されるはずです。
表示されない場合は、「 SUBMIT 」ボタンを押して明示的に検索を実行してください。

WS000662.JPG

なお、今回表示された上のグラフは横軸が時間、縦軸が値の折れ線グラフであり、フィールドごとに線が分かれています。
今回は紹介しませんが、折れ線グラフ以外のグラフも使用できます。

検索されたデータそのものを見たい場合は、「 View Raw Data 」を ON にするとグラフ化前のデータを確認することができます。

WS000663.JPG

7. 公式ドキュメント

今回はインストールとごく簡単な使い方を紹介しましたが、 InfluxDB は他にも様々なことができます。
ここでは紹介しませんが、以下のドキュメントを参考にいろいろ試してみてください。

ドキュメント(v2系) ※英語

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5