InfluxDB
概要
https://docs.influxdata.com/influxdb/v2.0/
https://www.influxdata.com/blog/data-layout-and-schema-design-best-practices-for-influxdb/
https://community.influxdata.com/t/whats-the-logical-connection-between-buckets-measurements-retention-policies-in-influxdb-2-0/15900
概念
Organization
複数ユーザで共通して利用するワークスペース。Dashboard, Task, Bucket, メンバーなどが共有される。
https://docs.influxdata.com/influxdb/v2.0/organizations/
Bucket
時系列データの格納先。どの程度の期間のデータを保持するか?は Retention policy で決めることができる。単一の InfluxDB OSS のインスタンスは、同時に約 20 の Bucket に対する読み書きをサポートしており、それ以上だとパフォーマンスが悪化する恐れがある。
https://docs.influxdata.com/influxdb/v2.0/organizations/buckets/
データの書き込み
https://docs.influxdata.com/influxdb/v2.0/write-data/
スキーマ
bucket
series
measurement, tagのkeyValue の組み合わせ, bucket を共有するデータの集まり
series のカーディナリティが高くなるとパフォーマンスが落ちるので注意する
measurements
tag key&values
field keys
tag vs field
tag はインデックスされるが、field はされない。
頻繁にクエリに利用するメタデータには、tag を利用する
ただし、カーディナリティが高いメタデータには、field を利用する
数値には field を利用する (tag は文字列のみをサポートするため)
https://docs.influxdata.com/influxdb/v2.0/reference/glossary/#schema
必要なもの
organization
buket
authentication token
InfluxDB URL
line protocol フォーマット
line protocol フォーマットとは、各行が1つのデータを表現しているような記述形式のこと。各行には、各々下記が必要となる。
measurement
field set
tag set
timestamp
省略した場合、InfluxDB はホストマシンのシステム時刻を利用する
デフォルトだと単位はナノ秒。単位は指定するのが推奨されている。サポートされている単位は下記
ns: ナノ秒
us: マイクロ秒
ms: ミリ秒
s: 秒
例えば、以下のような感じ
code:console
mem,host=host1 used_percent=23.43234543 1556892576842902000
cpu,host=host1 usage_user=3.8234,usage_system=4.23874 1556892726597397000
mem,host=host1 used_percent=21.83599203 1556892777007291000
書き込み方法
色々あるみたい
ノーコード
Telegraf
Scraper
3rd party 製
Apatch NiFi, OpenHAB, Apatch JMeter, FluentD
Developer tool
3rd party 製
AWS Lambda
クライアントライブラリ
influxdb-client-ruby, influxdb-client-swift, ...
CSV データの書き込み
CLI
API
Line Protocol
構成要素
InfluxDB の 1 データは、以下の要素から構成される。
table:line protocol
要素 データ型 Required 概要
Measurement String Y データ群の区別のために利用される名前
Tag Key String N インデックスされるメタデータ
Tag Value String N
Field Key String Y インデックスされないメタデータ
Field Value Float | Int | UInt | String | Bool Y
Timestamp Unix timestamp N 時刻. 省略した場合はホストマシンの現在時刻となる
データ型
Float
Integer
UInteger
String
Boolean
Unix timestamp
クオートについて
Measurement や Tag の Key&Value, Field の Key でクオートは利用できるが、名前や値の一部とみなされるので注意
Field の Value では String の場合のみ利用でき、そのほかでは利用できない
Timestamp では利用できない
命名の制限
_ で始まる measurement, tag key, field key は、InfluxDB が内部で利用するよう予約されているため利用できない
point と重複
ある measurement & tag set & timestamp の組み合わせを持ったデータは point として識別される
point が重複した場合、field を結合して扱われる
コンフリクトした場合、新しい point の値が優先される
https://docs.influxdata.com/influxdb/v2.0/reference/syntax/line-protocol/
Best Practice
https://docs.influxdata.com/influxdb/v2.0/write-data/best-practices/
データのクエリ
https://docs.influxdata.com/influxdb/v2.0/query-data/
InfluxDB CLI
https://docs.influxdata.com/influxdb/v2.0/get-started/#optional-set-up-and-use-the-influx-cli