/api/mput エンドポイントを使用して、Time Series Database (TSDB) にマルチ値データポイントを書き込みます。各データポイントは、特定のタイムスタンプで単一のデータソースに属し、1 回の書き込み操作で複数のメトリックフィールド(例:サーバーの cpu、mem、load)の値を保持します。
仕組み
マルチ値データポイントでは、1 つのメトリック名、1 つのタイムスタンプ、および 1 組のタグの下に複数のメトリックフィールドの値がグループ化されます。これは、各フィールドに対して個別のデータポイントが必要となるシングル値モデル(/api/put)とは異なります。
すべてのリクエストは、リクエストボディに JSON 配列を含む POST /api/mput を使用します。URL にクエリパラメーターを追加することで、書き込みモードを選択できます。
| 書き込みモード | クエリパラメーター | 戻り値 |
|---|---|---|
| シンプル | (なし) | 状態コードのみ |
| 統計的 | summary | success および failed のカウント |
| 詳細情報付き | details | success、failed、および errors(最初の失敗情報) |
| フォールトトレラント | ignoreErrors | success、failed、および errors(すべての失敗情報) |
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
TSDB の HTTP エンドポイントへのネットワークアクセスが可能であること
各データポイントについて、少なくとも 1 つのタグのキーと値のペアが設定されていること
High-availability Edition では、メトリック名の長さは最大 255 バイトです。
マルチ値データポイントの書き込み
リクエストボディにデータポイントの JSON 配列を含む POST リクエストを /api/mput に送信します。各データポイントには、metric、timestamp、fields、および tags を含める必要があります。
リクエスト
エンドポイント
POST /api/mputクエリパラメーター
応答フォーマットを制御するために、これらのパラメーターを URL に追加します。型指定のないパラメーターは、値に関係なく存在するだけで true とみなされます。
| パラメーター | 型 | デフォルト値 | 説明 | 例 |
|---|---|---|---|---|
summary | 型指定なし | false | 書き込み統計情報(success および failed のカウント)を返します。 | /api/mput?summary |
details | 型指定なし | false | 書き込み統計情報および最初の書き込みエラーを返します。summary と details の両方が指定されている場合、details が優先されます。 | /api/mput?details |
sync_timeout | 整数 | 0 | タイムアウト(ミリ秒単位)。0 の場合はタイムアウトしません。 | /api/mput?sync&sync_timeout=60000 |
ignoreErrors | 型指定なし | false | 1 つのデータポイントの書き込みに失敗した場合でも、残りのデータポイントの書き込みを継続します。 | /api/mput?ignoreErrors |
リクエストボディ
各要素がデータポイントである JSON 配列を渡します。各データポイントには、以下のフィールドを含める必要があります。
| フィールド | 型 | 必須 | 制約 | 説明 |
|---|---|---|---|---|
metric | 文字列 | はい | 英字、数字、および -_./():,[]='# を使用可能。High-availability Edition では最大 255 バイトです。 | メトリック名です。 |
timestamp | Long | はい | タイムスタンプのルールをご参照ください。 | データポイントのタイムスタンプ(秒またはミリ秒単位)です。 |
fields | Map | はい | フィールド名は metric と同じ文字ルールに従います。値は STRING、NUMBER、または BOOLEAN のいずれかである必要があります。STRING 値は最大 20 KB です。 | メトリックフィールドのキーと値のペアです。 |
tags | Map | はい | 英字、数字、および -_./():,[]='# を使用可能。少なくとも 1 つのタグのキーと値のペアが必要です。文字列以外の値は自動的に文字列に変換されます。 | データポイントのタグのキーと値のペアです。 |
リクエストの例
POST /api/mput
Content-Type: application/json
[
{
"metric": "wind",
"fields": {
"speed": 20.8,
"level": 4,
"direction": "East",
"description": "Fresh breeze"
},
"tags": {
"sensor": "IOTE_8859_0001",
"city": "hangzhou",
"province": "zhejiang",
"country": "china"
},
"timestamp": 1346846400
},
{
"metric": "wind",
"fields": {
"speed": 40.2,
"level": 6,
"direction": "South",
"description": "Fresh breeze"
},
"tags": {
"sensor": "IOTE_8859_0002",
"city": "hangzhou",
"province": "zhejiang",
"country": "china"
},
"timestamp": 1346846401
}
]タイムスタンプのルール
TSDB は、数値の大きさに基づいてタイムスタンプの単位を判別します。このルールは、/api/put、/api/mput、/api/query、および /api/mquery に適用されます。
| 値の範囲 | 単位 | 対応する日付範囲 |
|---|---|---|
| 4,294,968 ~ 4,294,967,295 | 秒 | 1970-02-20 01:02:48 ~ 2106-02-07 14:28:15 |
| 4,294,967,296 ~ 9,999,999,999,999 | ミリ秒 | 1970-02-20 01:02:47.296 ~ 2286-11-21 01:46:39.999 |
| 上記の範囲外 | 無効 | — |
書き込みモード
アプリケーションで必要とする応答の詳細度に応じて、書き込みモードを選択してください。
シンプルモード
クエリパラメーターは不要です。成功時は HTTP 204 を返します。失敗時はエラーコードおよびエラーメッセージを返します。
書き込みエラーが発生しないことが想定される一般的なモニタリングデータや、リトライ処理が外部で実装される場合にこのモードを使用します。
統計情報付きモード
リクエスト URL に ?summary を追加します。書き込みの成否に関わらず、success および failed のカウントを返します。
{
"success": 20,
"failed": 0
}| 応答フィールド | 型 | 説明 |
|---|---|---|
success | 整数 | 書き込まれたデータポイント数です。シングル値モデルでカウントされ、マルチ値データポイント内の各フィールドが個別にカウントされます。 |
failed | 整数 | 書き込みに失敗したデータポイント数です。 |
統計情報付きモードでは、単一のapi/mputリクエスト内のすべてのデータポイントが、成功または失敗のいずれか一方にまとめて判定されます。いずれかのデータポイントが失敗した場合、failedにはリクエスト内のデータポイント総数が反映されます。
書き込みスループットの統計情報を追跡する場合にこのモードを使用します。
詳細情報付きモード
リクエスト URL に ?details を追加します。統計情報付きモードを拡張し、応答に最初の書き込み失敗情報を含めます。
| 応答フィールド | 型 | 説明 |
|---|---|---|
success | 整数 | 書き込まれたデータポイント数です。 |
failed | 整数 | 書き込みに失敗したデータポイント数です。 |
errors | 配列 | 最初に失敗したデータポイントの詳細情報(データポイント自体および失敗原因)です。 |
詳細情報付きモードでは、リクエスト内のすべてのデータポイントが成功または失敗のいずれか一方にまとめて判定されます。errors配列には最初の失敗情報のみが含まれます。失敗総数については、failedをご確認ください。
書き込み失敗の原因を特定する必要がある場合にこのモードを使用します。
フォールトトレラントモード
リクエスト URL に ?ignoreErrors を追加します。各データポイントを独立して書き込み、1 つのデータポイントの失敗が他のデータポイントの書き込みをブロックしません。
| 応答フィールド | 型 | 説明 |
|---|---|---|
success | 整数 | 書き込まれたデータポイント数です。 |
failed | 整数 | 失敗したデータポイント数。 |
errors | 配列 | すべての失敗データポイント(それぞれのデータポイントおよび失敗原因を含む)です。errors にリストされていないデータポイントは正常に書き込まれています。 |
1 つ以上のデータポイントが書き込まれた場合は HTTP 200 を返します。すべてのデータポイントがストレージ障害などの重大なエラーにより失敗した場合にのみ、200 以外のステータスコードを返します。リクエストに有効および無効なデータポイントが混在する可能性があり、可能な限り多くのデータポイントを正常に書き込む必要がある場合にこのモードを使用します。
API の違い
各操作には適切なエンドポイントを使用してください。
| 操作 | エンドポイント |
|---|---|
| シングル値データポイントの書き込み | POST /api/put |
| マルチ値データポイントの書き込み | POST /api/mput |
| シングル値データポイントのクエリ | GET /api/query |
| マルチ値データポイントのクエリ | GET /api/mquery |