5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

InfluxDBに入門してみる

Last updated at Posted at 2019-06-25

InfluxDBに入門してみる

参考

この記事はほぼ上記のドキュメントの拙訳(±α)になっています。

環境

Ubuntu18.04

インストール

$ wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.6_amd64.deb
$ sudo dpkg -i influxdb_1.7.6_amd64.deb

データベースを作成する

$ service influxdb start # サーバーの起動
$ influx -precision rfc3339 # influxDBに接続
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
> 

注意 : InfluxDB HTTP APIはデフォルトで8086ポート上で起動する。したがって、influxはデフォルトでローカルホストに8086ポートで接続しようとする。もしデフォルトから変える必要があれば、influx --helpを実行するとよい。
-precision引数は任意の返ってきたタイムスタンプのformat/precisionを特定する。この例では、rfc3339はInfluxDBにRFC3339 format (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)でタイムスタンプを返すように指定している。

話を戻す。 InfluxDBのフレッシュインストール後には(_internalは別として)データベースが存在しないので、まずはデータベースを作成する。CREATE DATABASE <db-name>でデータベースを作成ですることができる。<db-name>は作りたいデータベースの名前。データベースの名前は文字列がダブルクオーテーションで挟まれていればどんなユニコード文字列を含んでいてもよい。アスキー文字、ディジット、あるいはアンダースコアのみを含んでいてディジットで始まらない限りはクオーテーションでDB名を囲う必要はない。

> CREATE DATABASE mydb

データベースが無事作られたかどうか調べるためにSHOW DATABASESと打ち込んで存在するすべてのデータベースを表示してみる。

> SHOW DATABASES
name: databases
name
----
_internal
mydb

注意: _internalデータベースは内部のランタイムメトリクスを保存するために作成され、InfluxDBに使われる。

SHOW DATABASESとは異なりほとんどのInfluxQLステートメントは特定のデータベースに対して不利に働かなければならない(most InfluxQL statements must operate against a specific database)。各々のクエリでデータベースに名前をつけても良いが、CLIは便利なステートメントを用意している。USE <db-name>はすべての将来に渡るリクエストに対して、データベースを自動的にセットする。例えば:

> USE mydb
Using database mydb
>

これで、今後のコマンドはmydbデータベースに対してのみ実行される。

データを書き込んで探索する

今やデータベースが存在するので、InfluxDBはクエリの発行や書き込みの準備が出来ていることになる。

まずはじめに、データ保存に関する短い入門から始める。InfluxDB内のデータは"time series"(時系列)によって組織化されており、“cpu_load"や"temperature"のように測定された値を含んでいる。時系列はゼロから複数のpoints(各々の測定からの離散的サンプルに対する一つ(one for each discrete sample of the metric))を持つ。Pointsはtime(タイムスタンプ)、measurement(例えば"cpu_load")、少なくとも1つのkey-valuefield(測定された値そのもので、例えば"value=0.64"や"temperature=21.2")、そして値に対するメタデータを含んだzero to many key value tags(例えば、“host=server01”, “region=EMEA”, “dc=Frankfurt”)で構成される。

概念的にはmeasurementをSQLテーブルとして考えることができる。プライマリーインデックスが常に時間であると考えればよい。tagsfieldsは実質的にはテーブル内のカラムである。tagsはインデックス化され、fieldsはされない。(SQLテーブルとの)違いはというと、InfluxDBを使うことで数百万のmeasurementの値をもつことが出来、スキーマを前もって定義する必要がなくヌル値は保存されないということである。

PointsはLine Protocolを使って次のようなフォーマットにしたがってInfluxDBに書かれる。

<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]

InfluxDBに書き込むことが出来るpointsのすべての例は次のようになる:

cpu,host=serverA,region=us_west value=0.64
payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=AAPL bid=127.46,ask=127.48
temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

CLIを使って単一の時系列データポイントをInfluxDBに挿入するためにpointがあとに続くINSERT文を入力する:

> INSERT cpu,host=serverA,region=us_west value=0.64
> 

cpuというmeasurementの名前とhostおよびregionというタグを伴ったpointは今、測定されたvalue0.64という形でデータベースに書き込まれる。

書き込んだデータに対してクエリを発行してみる:

> SELECT "host", "region", "value" FROM "cpu"
name: cpu
time                           host    region  value
----                           ----    ------  -----
2019-06-24T21:59:49.117249421Z serverA us_west 0.64
>

別の種類のデータを保存してみる。同じmeasurement内で2つのフィールドを持ったものとする:

> INSERT temperature,machine=unit42,type=assembly external=25,internal=37
>

クエリによってすべてのフィールドとタグを返すために、*演算子を使うことができる:

> SELECT * FROM "temperature"
name: temperature
time                           external internal machine type
----                           -------- -------- ------- ----
2019-06-24T22:05:42.841203137Z 25       37       unit42  assembly

InfluxQLはここではカバーされていない多くのフィーチャーやキーワードを持っており、その中にはGo-style regexのためのサポートも含まれている。例えば:

> SELECT * FROM /.*/ LIMIT 1
--
> SELECT * FROM "cpu_load_short"
--
> SELECT * FROM "cpu_load_short" WHERE "value" > 0.9

これでInfluxDBにデータを書き込みクエリを返すために知っておく必要があることは全てである。InfluxDB write protocolについてもっと学ぶためにはWriting Dataに関するガイドをチェックするとよい。クエリ言語をさらに探索するためには、Querying Dataに関するガイドをチェックするとよい。InfluxDBに関するさらなる情報に関しては、Key Conceptsページをチェックするとよい。

5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?