プロジェクト

全般

プロフィール

InfluxDB excercise 1

概要

本練習では、InfluxDBに 作業領域(Organization)、データベース領域(Bucket)、テーブル(Measurement)を作成し、時系列データを書き込み、読み出しします。

No. 項目 命名
1 Organization ssweepers
2 Bucket dawn1
3 Measurement telemetries

Pointデータとして、タグセットに2つのタグ、フィールドセットに1つの浮動小数点数を持つものを定義します。

Measurement tag field time
source category BTMP4001
telemetries OBC_P HK_A 13.5 2024-09-08T01:00:00Z

操作

データベース構造の作成

Organizationとtokenの作成

ここでは、Influx DBインストール時に作成された org、tokenを使用してOrganizationを作成、そのOrganizationで使用するtokenを作成します。

  • 環境変数 INFLUX_ORG には、インストール時に作成した org名を指定
  • 環境変数 INFLUX_TOKEN には、インストール時に作成した tokenを指定
Organizatin作成
work % influx org create --name ssweepers
ID            Name
123456789abcdef0    ssweepers
Tokenの作成
work % influx auth create --org ssweepers --all-access

コマンドを実行すると、token文字列、権限の種類とパーミッションが表示されます。
以降、ここで生成したtokenを使用します。

環境変数の更新

influxコマンドラインコマンドを使用する場合、
環境変数 INFLUX_ORGとINFLUX_TOKENを変更します。

export INFLUX_ORG=ssweepers
export INFLUX_TOKEN=WxbEWU-7RILekvTsFegpInGpEozHeoGGP2KFj16E9GkXI7f0tTIue3AR6iKZm51NwWrGZAbZQbjtdtNhAzov6w==
  • tokenはドキュメント用に作ったものです(インストール時のものから先頭1文字変更しただけ)

Bucketの作成

work % influx bucket create --name dawn1
ID            Name    Retention    Shard group duration    Organization ID        Schema Type
6789abcdef012345    dawn1    infinite    168h0m0s        123456789abcdef0    implicit
  • デフォルトでは、Retentionポリシー(データの保持期限)は無限(infinite)、shard group duration(データの格納単位の期間)は1週間(168H)、Schema Typeはimplicit

データの登録

コマンドラインからのデータの登録

ラインプロトコルで指定したデータの登録
  • データのタイムスタンプをUnix timeに変換しておく(BSD系dateコマンドの場合)
     % date -u -j -f '%Y-%m-%d %H:%M:%S' '2024-09-08 01:00:00' +%s
    1725757200
    
  • influx コマンドでデータを登録
     % influx write --bucket dawn1  --precision s \
    "telemetries,source=OBC_P,category=HK_A BTMP4001=13.5 1725757200
    
  • ラインプロトコルで指定する時刻は、UNIX timeとなります。年月日時分秒からUNIX timeに変換します。その際、デフォルトではナノ秒単位となるので、--precision オプションで単位を(us: マイクロ秒、ms: ミリ秒、s: 秒)で指定します。
ファイルに記述したPointデータの登録

テキストファイルにラインプロトコルで記述したデータを読み込み登録する方法、注釈付きCSVファイルに記述したデータを読み込み登録する方法があります。

コマンドラインで登録したデータの確認

コマンドラインで指定可能なクエリは、Flux言語となります。ワンライナーでFlux言語を記述するのはわかりにくいので、ファイルにFlux言語でクエリを記述しコマンドラインでそれを指定するのがよいでしょう。

  • query1.flux
    from(bucket: "dawn1")
        |> range(start: 2024-09-08T00:00:00Z, stop: 2024-09-30T23:59:59Z)
        |> aggregateWindow(every: 1m, fn: last, createEmpty: false)
    
  • fromで、クエリ対象 Bucket を指定
  • rangeで、クエリの対象とする時刻範囲を指定、絶対時刻の他、現在時刻からの相対指定(例: -1h)も可能
  • aggregateWindowで、集約範囲とする時間幅、集約関数などを指定
    • every: 集約範囲の時間、必須指定
    • fn: 集約関数、必須指定、lastは集約範囲で最後(最新)の値を返す
    • createEmpty: デフォルトはtrueで、集約範囲にデータがない場合でも出力する(その場合、実データが空で表示される)

Flux言語でクエリを記述したファイルを実行

work % influx query --file ./query1.flux

  • --fileオプションの代わりにファイル名にを付ける簡易な方法あり(@influx query @query1.flux

実行結果は、次の通りです。

work % influx query @query1.flux
Result: _result
Table: keys: [_start, _stop, _field, _measurement, category, source]
                   _start:time                      _stop:time           _field:string     _measurement:string         category:string           source:string                      _time:time                  _value:float
------------------------------  ------------------------------  ----------------------  ----------------------  ----------------------  ----------------------  ------------------------------  ----------------------------
2024-09-08T00:00:00.000000000Z  2024-09-30T23:59:59.000000000Z                BTMP4001             telemetries                    HK_A                   OBC_P  2024-09-08T01:01:00.000000000Z                          13.5

データの検索

データの取り出し

influx inspect export-lp

https://docs.influxdata.com/influxdb/v2/reference/cli/influxd/inspect/export-lp/

TSMデータから指定したBucketのデータを、ラインプロトコル形式でファイルにエクスポートします。

$ influxd inspect export-lp \
  --bucket-id 12ab34cd56ef \
  --engine-path /var/lib/influxdb/engine \
  --measurement example-measurement-1,example-measurement-2 \
  --start 2021-01-01T00:00:00Z \
  --end 2021-01-31T23:59:59Z \
  --output-path path/to/export.lp

h4.


約1ヶ月前に更新