読者です 読者をやめる 読者になる 読者になる

【influxdb 0.9.x】 HTTP API経由でのinfluxdbへのデータ書き込み

influxdb

データベース作成

mydb というデータベースを作成する

curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"

データ書き込み

データベース: mydb に下記データを書き込む

項目 意味
measurement cpu_load_short 関連するfield に保存されたデータについて記述したもの.string
tag key host, region key-value 型である tag の key の部分。string
tag value server01, us-west key-value 型である tag の value の部分。string
field key value key-value 型であるfield のkey の部分。string
field value 0.64 key-value 型であるfield のvalue の部分で、実際のデータに該当する。string, float, integer, or boolean
timestamp 1434055562000000000 データの時間。influxdbではすべてUTC
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'

複数データを一気に書き込む

このようにして複数データを一気に書き込むことができる

curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257'

ファイルのデータを書き込む

//cpu_data.txt
cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257

上記の cpu_data.txt を用意して, データベース mydb に書き込む

curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary @cpu_data.txt

ただし、5000 行を超えるようなデータの場合は複数ファイルに分割すべき。
デフォルトでは 書き込み timeout が5秒のため、timeoutを超えた場合に正常に書き込めたか確認取れないため。

スキーマ設計

influxdb はスキーマレスです。 いついかなるときでも新しい measurements, tags, and fields を追加することができます。
注意点としては前回の書き込みとは異なるデータ型で書き込んだ場合(前回はstring 型だったが、今回はfloat型の場合など)、influxdb は書き込みを拒否します。

HTTP response summary

  • 2xx
    • HTTP 204 No Content: 成功
    • HTTP 200 OK : influxdb はリクエストを解釈できるが完了できない. レスポンスボディに追加のエラー情報が含まれているはずです。
  • 4xx
    • InfluxDB はリクエストを解釈できません.
  • 5xx
    • システム高負荷か重大な障害にあっている.

https://influxdb.com/docs/v0.9/guides/writing_data.html