このトピックでは、InfluxDB line protocol を使用して LindormTSDB にデータを書き込む方法について説明し、例を示します。
背景情報
LindormTSDB は、InfluxDB ラインプロトコルで定義されている形式と互換性があります。詳細については、「Line Protocol」をご参照ください。 InfluxDB ラインプロトコルをサポートするアプリケーションまたはデバイスを使用して、LindormTSDB にデータを書き込むことができます。
サポートされているデータ型
InfluxDB ラインプロトコルの構文は、Float、Integer、String、Boolean、および Timestamp のデータ型をサポートしています。次の表に、InfluxDB ラインプロトコルでサポートされているデータ型を示します。
データの型 | 説明 |
Float | 浮動小数点数。 Float はデフォルトのデータ型です。例:1、1.0、1.e+10、および 1.E+10。 |
Integer | 64 ビット整数をサポートします。 整数を識別するには、`i` サフィックスを使用します。 サフィックスのない数値は、浮動小数点数として解析されます。 例: 12i および 101i。 |
String | 文字列型。 二重引用符 ("") を使用します。 例: "hello world"。 |
Boolean | ブール値。有効な値:True および False。
|
Timestamp | タイムスタンプ。 プロトコルはナノ秒 (ns) をサポートしますが、データはミリ秒 (ms) に変換されてストレージに保存されます。 タイムスタンプの精度を変更するには、precision パラメーターを設定します。 |
リクエストパス
リクエストパス:/api/v2/write
リクエストメソッド:POST
InfluxDB line protocol を使用して LindormTSDB にデータポイントを書き込むリクエストを作成する場合、データポイントのフォーマットを InfluxDB line protocol で定義されたフォーマットに変更し、そのデータポイントを POST リクエストの本文として使用する必要があります。 次の表に、リクエストで設定できるパラメーターを示します。
パラメーター | 必須 | 説明 |
[precision] | いいえ | タイムスタンプの精度。デフォルト値:ns。有効な値:ns、us、ms、s、m、および h。 |
[db] | いいえ | データポイントを書き込むデータベースの名前。 |
[schema_policy] | いいえ | スキーマの制約ポリシー。このパラメーターのデフォルト値は WEAK です。弱い制約ポリシーを指定すると、時系列テーブルを自動的に作成できます。有効な値:
詳細については、「サポートされているスキーマ制約ポリシー」をご参照ください。 |
認証のためのユーザー資格情報の指定
LindormTSDB でユーザー認証が有効になっている場合、/api/v2/write にリクエストを送信するときに、HTTP リクエストヘッダーにユーザー資格情報を追加する必要があります。 /api/v2/write エンドポイントは BASIC AUTH メソッドを使用します。 エンコードされた資格情報は、HTTP リクエストヘッダーの [Authorization] フィールドに含める必要があります。
基本認証では、次の形式でユーザー資格情報を指定できます。
BASIC {Base64-encoded authentication information}Base64 でエンコードされた認証情報は、${username}:${password} のフォーマットの Base64 でエンコードされた文字列です。
さまざまなプログラミング言語を使用した基本認証用のユーザー資格情報のエンコードと指定方法の詳細については、関連するプログラミング言語のクラスライブラリのドキュメントをご参照ください。
デフォルトのユーザー名 `root` とパスワード `root` の場合、HTTP リクエストヘッダーの [Authorization] フィールドの Base64 でエンコードされた値は次のとおりです:
Authorization: Basic cm9vdDpyb290InfluxDB ラインプロトコルのデータ形式
以下に、Line Protocol の書き込みフォーマットとパラメーターを示します。
<table_name>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>] パラメーター | 必須 | 説明 |
[table_name] | はい | データポイントを書き込むテーブルの名前。 |
[tag_set] | いいえ | 書き込むデータポイントのタグ。タグを使用して、書き込まれたデータポイントを検索できます。 |
[field_set] | はい | 書き込むデータポイントのフィールド。 |
[timestamp] | いいえ | タイムスタンプ。 タイムスタンプを指定しない場合、システムは現在の時刻を使用します。 デフォルトの単位はナノ秒 (ns) です。 重要
|
複数のデータポイントは改行 (
\n) で区切ります。InfluxDB ラインプロトコルを使用して LindormTSDB にデータポイントを書き込む場合、エンジンで使用されるスキーマ制約は弱い制約です。 スキーマ ポリシー パラメーターを設定して、スキーマの制約ポリシーを変更できます。
例
次の文は、InfluxDB line protocol を使用して LindormTSDB にデータを書き込む方法の例です:
curl -X POST \
'http://ld-bp1489gr5t*****-proxy-tsdb.lindorm.rds.aliyuncs.com:8242/api/v2/write?precision=ms&db=default' \
-d '
sensor7,device_id=F07A1260,region=north-cn temperature=12.1,humidity=45i 1619076780000000000
sensor7,device_id=F07A1260,region=north-cn temperature=13.2,humidity=47i 1619076790000000000
sensor7,device_id=F07A1260,region=north-cn temperature=10.6,humidity=46i 1619076800000000000
sensor7,device_id=F07A1260,region=north-cn temperature=18.1,humidity=44i 1619076780000000000
sensor7,device_id=F07A1260,region=north-cn temperature=19.7,humidity=44i 1619076790000000000
'