InfluxDB 時系列の簡易分析¶
ソフトウェア概要¶
InfluxDB は、Go 言語で記述されたオープンソースの分散型時系列およびメトリクスデータベースです。
業界における位置づけ¶
InfluxDB は長年にわたり首位の座を維持しており、最新の時系列データベースランキングでは、2 位の Kdb+ に Prometheus 3 つ分の差をつけています。
基本概念¶
-
Database:データベース
-
Measurement:データテーブル。MySQL における table と考えることができます。
- Field:InfluxDB で実際のデータを記録するキーと値のペア(InfluxDB では必須、インデックス対象外)
- Field Set:Field のキーと値のペアの集合
- Field Key:Field のキーと値のペアにおけるキー
- Field Value:Field のキーと値のペアにおける値(実際のデータ)
- Tag:Field を説明するためのキーと値のペア(InfluxDB ではオプション、インデックス対象)
- Tag Set:Tag のキーと値のペアの集合
- Tag Key:Tag のキーと値のペアにおけるキー
- Tag Value:Tag のキーと値のペアにおける値
- TimeStamp:データポイントに関連付けられた日時
高度な概念¶
-
Retention Policy:データの保存期間(デフォルトは autogen、永久保存)
-
Series:時系列は、Retention Policy、Measurement、Tag Set の 3 つの部分で構成されます。
| Series Number | Retention Policy | Measurement | Tag Set |
|---|---|---|---|
| 時系列 1 | autogen | 天気 | 省=浙江,都市=温州 |
| 時系列 2 | autogen | 天気 | 省=浙江,都市=紹興 |
| 時系列 3 | autogen | 天気 | 省=江蘇,都市=常州 |
| 時系列 4 | autogen | 天気 | 省=江蘇,都市=無錫 |
- Point:1 つの Series 内で同じ TimeStamp を持つ Field Set。テーブル内の 1 行のデータと考えることもできます。
| TimeStamp | Measurement | Tag Set | Field Set | |
|---|---|---|---|---|
| 2021-12-12T00:00:00Z | disk | host=a,path=/ | free = 40836976 | used = 20836976 |
- Line Protocol:データポイントを InfluxDB に書き込むためのテキスト形式
実践操作¶
1. ソフトウェアのインストール¶
Influxdata の yum リポジトリを追加
cat <<EOF | tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
2. データのクエリ¶
ローカルインストールのため、influx コマンドを使用して直接データベースにアクセスします(詳細なパラメータは influx -h を参照)。
データテーブル telegraf を選択し、select コマンドでデータをクエリします(クエリ言語は InfluxQL)。
図では、4 つの部分(measurement、timeStamp、tag set、field set)から構成される 3 つの Point が確認できます。
Measurement**
- name = system
TimeStamp
- time = 1637744500000000000(ナノ秒)
Tag Set
- host = df-solution-ecs-018
Field Set
- load = 0,load15 = 0,load5 = 0.01,n_cpus = 4,n_users = 5,uptime = 1106990,uptime_format = 12days,19:29
3. 時系列の表示¶
show series コマンドで時系列を表示します。
measurement が cpu の時系列は 5 つであることがわかります(cpu-total、cpu0、cpu1、cpu2、cpu3、host はすべて同じ)。
4. 時系列のテスト¶
4.1 inputs.tags の追加(プラグインタグ)¶
メイン設定ファイル /etc/telegraf/telegraf.conf に inputs.cpu.tags を追加します。
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[inputs.cpu.tags]
cloud = 'aliyun'
4.2 measurement の削除¶
drop コマンドで measurement を削除します。
再度 show series コマンドで時系列を表示
measurement が cpu の時系列が 5 つに戻ったことがわかります(cpu-total、cpu0、cpu1、cpu2、cpu3、host/cloud はすべて同じ)。
4.3 global_tags の追加(グローバルタグ)¶
メイン設定ファイル /etc/telegraf/telegraf.conf に global_tags を追加します。
telegraf を再起動
show series コマンドで時系列を表示
measurement が cpu の時系列が再び 5 => 10 に増加したことがわかります。
show series コマンドで他の measurement の時系列を表示
measurement が mem の時系列が 1 => 2 に増加したことがわかります。
簡単な解説¶
- retention policy は不変
- プラグインタグを使用すると、該当する measurement の時系列は倍になります。
- グローバルタグを使用すると、該当する database の時系列は倍になります。
-
measurement も変わらない場合、tag の組み合わせが多いほど、時系列は多くなります。
-
measurement
-
一度削除されると、その measurement 下のすべての時系列がクリアされます。
-
tag
- 通常は列挙可能な値(例:hostname、status)です。
- ランダムな値(例:container id、source ip)は使用できません。大量の時系列が発生する原因となるためです。






