DQL データクエリ(旧版)¶
POST /api/v1/df/query_data
概要¶
DQL データクエリ
Query リクエストパラメータ¶
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| body | string | dql クエリの query 構造体 空の値を許可: False |
|
| queries_body | string | dql クエリの query 構造体(2023-08-11 にこのパラメータは廃止) 空の値を許可: False |
|
| search_after | string | ページングクエリのリクエストパラメータ(2023-08-11 にこのパラメータは廃止) 空の値を許可: False |
パラメータの補足説明¶
クエリ説明
この API は旧版との互換性を保つためのエントリポイントです。新規に接続する場合は POST /api/v1/df/query_data_v1 の使用を推奨します。旧版 GET では引き続き body=<URL エンコードされた JSON> でパラメータを渡し、JSON を二重にエンコードしないでください。
この API は POST と GET の両方をサポートしており、どちらの方式でも同じ JSON オブジェクトのパラメータ構造を使用します。
- POST:すべてのパラメータを
application/jsonのリクエストボディとして渡します。 - GET:HTTP エンティティボディは使用せず、クエリ文字列の
body=<完全な JSON オブジェクト文字列>で渡します。クライアント側でbodyパラメータを URL エンコードしてください。 - トップレベルは JSON オブジェクトである必要があります。二重に JSON エンコードされた string、array、null、number、boolean は受け付けません。
ワークスペース間やサイト間をまたぐクエリでは、1 つのリクエスト内のすべての queries[*] が同じ targetRegion を指す必要があります。複数のサイトをクエリする場合は、サイトごとにリクエストを分割し、クライアント側で結果をマージしてください。対象ワークスペースと targetRegion は /api/v1/wksp_share/granted_ws_list から取得してください。詳細は OpenAPI クロスサイトデータクエリ を参照してください。
レスポンスの content.data[i].warnings[] には DQLDataAccessScopeRestricted が含まれる場合があります。
details[0].metadata.namespaceは現在はloggingに固定されています。details[0].metadata.restriction=partialは、アクセス権限のあるログインデックスのデータのみを返すことを示します。details[0].metadata.restriction=allは、関連するすべてのログインデックスにデータアクセス権限がなく、空の結果を返すことを示します。-
HTTP ステータスコードは引き続き 200 で、warning は GuanceDB/Kodo の既存の warning と共存します。
-
クエリ文字列の各要素フィールドの説明
| パラメータ名 | type | 必須 | 説明 |
|---|---|---|---|
| body | string | queries_body と二択 | クエリリクエストボディ |
| queries_body[*] | string | body と二択 | (旧版パラメータ、2023-08-10 に廃止)クエリリスト |
| search_after | string | (旧版パラメータ、2023-08-10 に廃止。新版ではパラメータの位置が query 構造体に移動)クエリのページングデータ。初回クエリのデフォルトは [] で、さらにページングデータをクエリする場合は、前回のクエリ結果の search_after フィールドを追加して後続データを取得します。 |
body と互換パラメータの queries_body はいずれも条件付き必須パラメータです。空でない有効な JSON 値を少なくとも 1 つ指定してください。両方を指定した場合は、空でない queries_body が優先されます。
- body 内の JSON 構造パラメータの説明
| パラメータ名 | type | 必須 | 説明 |
|---|---|---|---|
| queries | array | Y | 複数コマンドのクエリ。内容は query オブジェクトのリストです |
| fieldTagDescNeeded | boolean | field または tag の説明情報が必要かどうか |
- queries[*] メンバーのパラメータ構造の説明
| パラメータ名 | type | 必須 | 説明 |
|---|---|---|---|
| qtype | string | Y | クエリ文のタイプ dql: DQL クエリ文promql: PromQL クエリ文 |
| query | json | Y | クエリ構造 |
| query.q | string | qtype のタイプと一致するクエリ文。例:dql または promql クエリ文 | |
| query.ignore_cache | boolean | キャッシュを無効にするかどうか。デフォルトは false で、キャッシュを使用することを示します |
|
| query.promqlType | enum | qtype=promql の場合に有効です。選択可能な値は instantQuery、rangeQuery。デフォルトは rangeQuery |
|
| query.highlight | boolean | ハイライトデータを表示するかどうか | |
| query.timeRange | array | 時間範囲のタイムスタンプリスト。DQL / PromQL の開始・終了時刻は同じ単位(秒、ミリ秒、マイクロ秒、ナノ秒)を使用する必要があります。混在させた場合は HTTP 400 ft.TimeRangeUnitMismatch が返されます。ページングカーソルは独立して保持されます |
|
| query.disableMultipleField | bool | シングルカラムモードを有効にするかどうか。デフォルトは true |
|
| query.showLabel | bool | オブジェクトの labels を表示するかどうか。デフォルトは false |
|
| query.funcList | array | DQL の戻り値を再集計して修飾します。disableMultipleField=false の場合、このパラメータは無効です |
|
| query.slimit | integer | 時系列グループのサイズ。メトリクスクエリにのみ有効です | |
| query.soffset | integer | 時系列グループのオフセット | |
| query.limit | integer | ページングサイズ | |
| query.offset | integer | ページングオフセット | |
| query.orderby | array | ソートリスト。構造は {fieldName: method}。メジャーメントクエリでは fieldName=time のみサポートされ、method は desc、asc を選択できます |
|
| query.density | string | レスポンスのポイント密度。優先度は autoDensity より低く、dql 文で設定された密度より高い | |
| query.interval | number | 時間スライスの間隔。Kodo の int64 範囲に変換可能で、1ms 以上である整数ミリ秒の正数のみ受け付けます。デフォルトの単位は秒で、interval_unit でミリ秒を指定できます | |
| query.interval_unit | string | interval の単位。s、ms を選択可能。デフォルトは s |
|
| query.search_after | array | ページングマーカー。この API が返すページングマーカーで、次回のリクエスト時に渡します | |
| query.maxPointCount | integer | 最大ポイント数 | |
| query.workspaceUUID | string | クエリ対象の単一の認可元ワークスペース UUID。* は targetRegion 内のすべての認可済みワークスペースをクエリすることを示します |
|
| query.workspaceUUIDs | array | クエリ対象の認可元ワークスペース UUID のリスト。空でない場合は query.workspaceUUID より優先されます。同じリスト内は必ず同じサイトに属している必要があります。["*"] は targetRegion 内のすべての認可済みワークスペースをクエリすることを示します。両方のフィールドを同時に渡すことは推奨しません |
|
| query.targetRegion | string | 認可元ワークスペースが属するサイトの regionCode。/wksp_share/granted_ws_list 内で対象の workspaceUUID と同じグループの regionCode から取得します。明示的なクロスサイトクエリでは渡すことを推奨し、* をクエリする場合は必ず渡してください |
|
| query.output_format | string | lineprotocol: ラインプロトコル出力。デフォルトで未入力の場合は、既存の出力形式を維持します | |
| query.cursor_time | integer | 分割クエリのしきい値。最初の分割クエリでは end_time に設定します。以降はレスポンス内の next_cursor_time を渡します |
|
| query.cursor_token | string | ページングクエリのトークン(エンジンが返す cursor_token の値)。ページングクエリでは、前回のクエリで返された next_cursor_token を今回のクエリの cursor_token に設定する必要があります。cursor_token がないリクエストでは、ページ送り時に同じタイムスタンプのデータがスキップされる可能性があります。 | |
| query.disable_sampling | bool | サンプリング無効化スイッチ。デフォルト値は false | |
| query.disable_truncate | bool | 返される内容の切り詰めを無効にするかどうか。デフォルトは false で、切り詰めを許可します |
- レスポンスのポイント密度
densityパラメータの値の説明
| 選択可能な値 | 説明 |
|---|---|
| lower | 低め、60 ポイント |
| low | 低、180 ポイント |
| medium | 中、360 ポイント |
| high | 高、720 ポイント |
-
ポイント密度パラメータの優先順位に注意してください。最大密度は
density[high]です。* maxPointCount > interval > density > dql 文内の制御パラメータ -
よくあるクエリの説明
- OpenAPI クロスサイトデータクエリ
注:OpenAPI でデータクエリを実行する場合、デフォルトは管理者ロールです。データアクセスルールの制限を受ける可能性があることに注意してください。
リクエスト例¶
curl 'https://openapi.guance.com/api/v1/df/query_data?body=\{%22queries%22:\[\{%22uuid%22:%2205ea25f0-2fa3-11ee-aa03-57233270ef0c%22,%22qtype%22:%22dql%22,%22query%22:\{%22q%22:%22L::re(`.*`):(`*`)\{+`index`+IN+\[%27default%27\]+\}%22,%22highlight%22:true,%22limit%22:50,%22orderby%22:\[\{%22time%22:%22desc%22\}\],%22_funcList%22:\[\],%22funcList%22:\[\],%22disableMultipleField%22:false,%22align_time%22:false,%22is_optimized%22:true,%22offset%22:0,%22search_after%22:\[1690808645037,538070,%22L_1690808645037_cj3r2itnel8fnfu5tlag%22\],%22timeRange%22:\[1690807857000,1690808757999\],%22tz%22:%22Asia/Shanghai%22\}\}\],%22expensiveQueryCheck%22:true\}' \
-H 'DF-API-KEY: <DF-API-KEY>' \
--compressed
レスポンス¶
{
"code": 200,
"content": {
"data": [
{
"AsyncTaskPayload": null,
"async_id": "",
"column_names": [
"container_id",
"source",
"filepath",
"image",
"index",
"df_metering_size",
"__namespace",
"host",
"log_read_offset",
"__docid",
"filename",
"service",
"image_name",
"image_short_name",
"image_tag",
"log_read_lines",
"message",
"log_read_time",
"container_name",
"container_type",
"message_length",
"create_time",
"container_runtime_name",
"date_ns",
"status"
],
"complete": false,
"cost": "19ms",
"index_name": "",
"index_names": "",
"index_store_type": "es",
"is_running": false,
"points": null,
"query_type": "",
"raw_query": "{\\\"aggs\\\":{},\\\"_source\\\":{\\\"excludes\\\":[\\\"message@json\\\"],\\\"includes\\\":[]},\\\"query\\\":{\\\"bool\\\":{\\\"filter\\\":[{\\\"term\\\":{\\\"__namespace\\\":\\\"logging\\\"}},{\\\"range\\\":{\\\"date\\\":{\\\"gte\\\":\\\"1680187562081\\\",\\\"lte\\\":\\\"1680230762081\\\"}}},{\\\"bool\\\":{\\\"should\\\":[{\\\"terms\\\":{\\\"index\\\":[\\\"default\\\"]}}]}}]}},\\\"size\\\":50,\\\"sort\\\":[{\\\"date\\\":{\\\"missing\\\":\\\"_last\\\",\\\"order\\\":\\\"desc\\\",\\\"unmapped_type\\\":\\\"long\\\"}},{\\\"date_ns\\\":{\\\"missing\\\":\\\"_last\\\",\\\"order\\\":\\\"desc\\\",\\\"unmapped_type\\\":\\\"long\\\"}},{\\\"__docid\\\":{\\\"missing\\\":\\\"_first\\\",\\\"order\\\":\\\"desc\\\",\\\"unmapped_type\\\":\\\"string\\\"}}],\\\"search_after\\\":[1680226330509,8572,\\\"L_1680226330509_cgj4hqbrhi85kl1m6os0\\\"],\\\"timeout\\\":\\\"54s\\\"}",
"search_after": [
1680226330508,
82936,
"L_1680226330508_cgj4hbdepb7fcn07sf60"
],
"series": [
{
"columns": [
"container_id",
"time",
"source",
"filepath",
"image",
"index",
"df_metering_size",
"__namespace",
"host",
"log_read_offset",
"__docid",
"filename",
"service",
"image_name",
"image_short_name",
"image_tag",
"log_read_lines",
"message",
"log_read_time",
"container_name",
"container_type",
"message_length",
"create_time",
"container_runtime_name",
"date_ns",
"status"
],
"values": [
[
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380",
1680226330509,
"test",
"/var/lib/docker/containers/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test:test",
"default",
1,
"logging",
"izbp152ke14timzud0du15z",
149232879,
"L_1680226330509_cgj4hqbrhi85kl1m6org",
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test",
"test",
"test",
"test",
147890,
"ddtrace.profiling.exporter.http.UploadFailed: [Errno 101] Network is unreachable",
1680226330508872700,
"compose_python_ddtrace_web_b_1",
"docker",
80,
1680230633485,
"compose_python_ddtrace_web_b_1",
8571,
"unknown"
],
[
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380",
1680226330509,
"test",
"/var/lib/docker/containers/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test:test",
"default",
1,
"logging",
"izbp152ke14timzud0du15z",
149232879,
"L_1680226330509_cgj4hqbrhi85kl1m6or0",
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test",
"test",
"test",
"test",
147889,
" raise retry_exc from fut.exception()",
1680226330508872700,
"compose_python_ddtrace_web_b_1",
"docker",
40,
1680230633485,
"compose_python_ddtrace_web_b_1",
8570,
"unknown"
],
[
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380",
1680226330509,
"test",
"/var/lib/docker/containers/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test:test",
"default",
1,
"logging",
"izbp152ke14timzud0du15z",
149232879,
"L_1680226330509_cgj4hqbrhi85kl1m6oqg",
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test",
"test",
"test",
"test",
147888,
" File \\\"/usr/local/lib/python3.7/site-packages/tenacity/__init__.py\\\", line 361, in iter",
1680226330508872700,
"compose_python_ddtrace_web_b_1",
"docker",
87,
1680230633485,
"compose_python_ddtrace_web_b_1",
8569,
"unknown"
],
[
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380",
1680226330508,
"test",
"/var/lib/docker/containers/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380/2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test:test",
"default",
1,
"logging",
"izbp152ke14timzud0du15z",
149228783,
"L_1680226330508_cgj4hbdepb7fcn07sf60",
"2fef685801c80b5cb7d04b7b5e859007de94752aadbe801df812a058acf5e380-json.log",
"test",
"test",
"test",
"test",
147841,
"KeyError: 'dd.service'",
1680226330507918000,
"compose_python_ddtrace_web_b_1",
"docker",
22,
1680230573234,
"compose_python_ddtrace_web_b_1",
82936,
"unknown"
]
]
}
],
"total_hits": 10000
}
]
},
"errorCode": "",
"message": "",
"success": true,
"traceId": "TRACE-CD50CBBD-E29B-4F58-BD6B-618EED50920A"
}