コンテンツにスキップ

InfluxDB 時系列の簡易分析


ソフトウェア概要

InfluxDB は、Go 言語で記述されたオープンソースの分散型時系列およびメトリクスデータベースです。

業界における位置づけ

InfluxDB は長年にわたり首位の座を維持しており、最新の時系列データベースランキングでは、2 位の Kdb+ に Prometheus 3 つ分の差をつけています。

image.png

基本概念

  • 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 に書き込むためのテキスト形式
# 上記のテーブルの Point を行プロトコルに変換
disk,host=a,path=/ free=40836976,used=20836976 1639238400000000000

実践操作

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
Telegraf / Influxdb をインストール
yum -y install telegraf influxdb
ソフトウェアを起動
systemctl start influxdb
systemctl start telegraf

2. データのクエリ

ローカルインストールのため、influx コマンドを使用して直接データベースにアクセスします(詳細なパラメータは influx -h を参照)。

influx

データテーブル telegraf を選択し、select コマンドでデータをクエリします(クエリ言語は InfluxQL)。

use telegraf
select * from system limit 3

図では、4 つの部分(measurement、timeStamp、tag set、field set)から構成される 3 つの Point が確認できます。

image.png

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 コマンドで時系列を表示します。

show series from cpu

measurement が cpu の時系列は 5 つであることがわかります(cpu-total、cpu0、cpu1、cpu2、cpu3、host はすべて同じ)。

image.png

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'
telegraf を再起動
systemctl restart telegraf
show series コマンドで時系列を表示
show series from cpu
measurement が cpu の時系列が 5 => 10 に増加したことがわかります。

image.png

4.2 measurement の削除

drop コマンドで measurement を削除します。

drop measurement cpu

再度 show series コマンドで時系列を表示

show series from cpu

measurement が cpu の時系列が 5 つに戻ったことがわかります(cpu-total、cpu0、cpu1、cpu2、cpu3、host/cloud はすべて同じ)。

image.png

4.3 global_tags の追加(グローバルタグ)

メイン設定ファイル /etc/telegraf/telegraf.conf に global_tags を追加します。

[global_tags]
  user = 'admin'

telegraf を再起動

systemctl restart telegraf

show series コマンドで時系列を表示

show series from cpu

measurement が cpu の時系列が再び 5 => 10 に増加したことがわかります。

image.png

show series コマンドで他の measurement の時系列を表示

show series from mem

measurement が mem の時系列が 1 => 2 に増加したことがわかります。

image.png

簡単な解説

  • retention policy は不変
  • プラグインタグを使用すると、該当する measurement の時系列は倍になります。
  • グローバルタグを使用すると、該当する database の時系列は倍になります。
  • measurement も変わらない場合、tag の組み合わせが多いほど、時系列は多くなります。

  • measurement

  • 一度削除されると、その measurement 下のすべての時系列がクリアされます。

  • tag

  • 通常は列挙可能な値(例:hostname、status)です。
  • ランダムな値(例:container id、source ip)は使用できません。大量の時系列が発生する原因となるためです。

フィードバック

このページは役に立ちましたか?