InfluxDB
概要
概念
Organization
複数ユーザで共通して利用するワークスペース。Dashboard, Task, Bucket, メンバーなどが共有される。
Bucket
時系列データの格納先。どの程度の期間のデータを保持するか?は Retention policy で決めることができる。単一の InfluxDB OSS のインスタンスは、同時に約 20 の Bucket に対する読み書きをサポートしており、それ以上だとパフォーマンスが悪化する恐れがある。 データの書き込み
スキーマ
bucket
series
measurement, tagのkeyValue の組み合わせ, bucket を共有するデータの集まり
series のカーディナリティが高くなるとパフォーマンスが落ちるので注意する
measurements
tag key&values
field keys
tag vs field
tag はインデックスされるが、field はされない。
頻繁にクエリに利用するメタデータには、tag を利用する
ただし、カーディナリティが高いメタデータには、field を利用する
数値には field を利用する (tag は文字列のみをサポートするため)
必要なもの
organization
buket
authentication token
InfluxDB URL
line protocol フォーマット
line protocol フォーマットとは、各行が1つのデータを表現しているような記述形式のこと。各行には、各々下記が必要となる。
デフォルトだと単位はナノ秒。単位は指定するのが推奨されている。サポートされている単位は下記
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
書き込み方法
色々あるみたい
ノーコード
Scraper
3rd party 製
Developer tool
3rd party 製
クライアントライブラリ
CSV データの書き込み
CLI
API
Line Protocol
構成要素
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 の値が優先される
Best Practice
データのクエリ
InfluxDB CLI