同一組織内のクロスワークスペース Trace クエリ使用説明¶
本ドキュメントでは、デプロイメントプランの Studio における同一組織内のクロスワークスペース Trace クエリ機能のスイッチ設定、API の利用方法、よくある質問について説明します。
この機能は、同一組織内で指定した trace_id に基づいて複数のワークスペースのトレースデータを照会するために使用します。Trace クエリのシナリオのみを対象としており、通常の DQL クエリ API のクロスワークスペースのセマンティクスは変更されません。
前提条件¶
- Studio バックエンドのバージョンに
SameOrgTraceQuerySet設定と同一組織の Trace クエリ専用 API が含まれている必要があります。 - 対象ワークスペースが現在のワークスペースと同じ組織に属している必要があります。
- 現在のワークスペース以外を照会する場合は、
SameOrgTraceQuerySet.enableを有効にする必要があります。 - Kodo 側のパラメータは個別に調整する必要はありません。Studio バックエンドが内部リクエストに対象ワークスペースのリストを含めます。
設定スイッチ¶
SameOrgTraceQuerySet は Studio バックエンドサービスの設定にあり、デフォルトでは無効です。
SameOrgTraceQuerySet:
enable: false
maxWorkspaceCount: 20
maxLimit: 1000
maxTimeRangeHours: 24
workspaceListPageSizeMax: 100
設定項目の説明:
| 設定項目 | デフォルト値 | 説明 |
|---|---|---|
enable |
false |
同一組織内のクロスワークスペース Trace クエリを許可するかどうか。無効時は現在のワークスペースのみ照会できます。 |
maxWorkspaceCount |
20 |
1 回の Trace クエリおよびワークスペースリストの絞り込みで渡せるワークスペース UUID の最大数。 |
maxLimit |
1000 |
1 回の Trace クエリで limit を明示的に指定する場合の最大値。 |
maxTimeRangeHours |
24 |
1 回の Trace クエリで許可される最大時間ウィンドウ(単位:時間)。 |
workspaceListPageSizeMax |
100 |
同一組織のワークスペース簡易情報リストを取得する API で許可される最大ページサイズ。 |
設定を有効にした後、Studio バックエンドの関連サービスを再起動する必要があります。
スイッチの動作¶
スイッチ無効時¶
SameOrgTraceQuerySet.enable=false の場合:
- 同一組織のワークスペース簡易情報リストを取得する API は引き続き正常に利用できます。
- Trace クエリ API では現在のワークスペースのみ照会できます。
- リクエスト内の対象ワークスペース UUID リストに現在のワークスペース以外が含まれる場合、OpenAPI は
code=406、errorCode=ft.ParameterCheckFailedを返します。このエラーコードは他のパラメータ検証エラーでも使用されるため、エラーコードだけでスイッチの状態を判断することはできません。
現在のワークスペースの UUID のみを渡す場合、またはワークスペース UUID リストを渡さない場合は、現在のワークスペースのトレースデータを照会するのと同じです。
スイッチ有効時¶
SameOrgTraceQuerySet.enable=true の場合、Trace クエリ API は同一組織内の複数のワークスペース UUID を受け付けます。サーバー側はワークスペース数、時間ウィンドウ、クエリパラメータを検証し、内部クエリ時に対象ワークスペースのリストを含めます。
関連 API¶
同一組織のワークスペース簡易情報リストの取得¶
この API は SameOrgTraceQuerySet.enable の制御を受けず、Trace クエリの対象ワークスペースを選択するために使用できます。
OpenAPI:
AIAPI:
主なリクエストパラメータ:
| パラメータ | 説明 |
|---|---|
workspaceUUIDs |
OpenAPI のパラメータ。省略可能。ワークスペース UUID リストでフィルタリングします。 |
workspace_uuids |
AIAPI のパラメータ。省略可能。ワークスペース UUID リストでフィルタリングします。 |
beforeWorkspaceId / before_workspace_id |
ID ベースのページネーションカーソル。初回は省略し、以降は前ページのレスポンスで返された次ページのカーソルを指定します。 |
pageSize / page_size |
1 ページあたりの件数。デフォルトは 20。最大値は workspaceListPageSizeMax によって制御されます。 |
リストはワークスペース ID の降順で返されます。pageIndex / page_index は使用しません。ページネーションフィールドの対応は次のとおりです。
| API | リストの位置 | 次のページの有無 | 次ページのカーソル |
|---|---|---|---|
| OpenAPI | content.data |
content.pageInfo.hasMore |
content.pageInfo.nextBeforeWorkspaceId |
| AIAPI | data.items |
data.page_info.has_more |
data.page_info.next_before_workspace_id |
たとえば、OpenAPI の初回リクエストボディは次のとおりです。
レスポンスで hasMore=true かつ nextBeforeWorkspaceId=12345 の場合、次のリクエストは次のとおりです。
AIAPI の対応するリクエストは次のとおりです。
ページネーション中は元のワークスペースのフィルタ条件を変更しないでください。hasMore / has_more が false になったら終了します。ワークスペース ID はリストのページネーションにのみ使用され、以降の Trace クエリではワークスペース UUID を使用します。
同一組織の Trace クエリ¶
OpenAPI:
AIAPI:
OpenAPI のパラメータは lower camelCase 形式、AIAPI のパラメータはスネークケース形式です。
| OpenAPI パラメータ | AIAPI パラメータ | 説明 |
|---|---|---|
traceId |
trace_id |
必須。トレース ID。 |
workspaceUUIDs |
workspace_uuids |
省略可能。対象ワークスペースの UUID リスト。未指定の場合は現在のワークスペースを照会します。 |
whereClause |
where_clause |
省略可能。追加の DQL フィルタ条件。trace_id 条件を含める必要はありません。 |
source |
source |
省略可能。Trace データソース。デフォルトではすべてのソースを照会します。 |
startTime |
start_time |
省略可能。ミリ秒タイムスタンプ。未指定時はデフォルトで直近 1 時間です。 |
endTime |
end_time |
省略可能。ミリ秒タイムスタンプ。未指定時は、内部の DQL time_range に開始時間のみが含まれます。 |
limit |
limit |
省略可能。返却件数の上限。未指定時は内部クエリのデフォルトに従います。 |
cursorTime |
cursor_time |
省略可能。スクロールページネーションのカーソル。初回は 13 桁のミリ秒タイムスタンプを渡すことができ、以降はレスポンス内の 16 桁のマイクロ秒 next_cursor_time をそのまま渡します。 |
cursorToken |
cursor_token |
省略可能。レスポンス内の next_cursor_token をそのまま渡します。空の場合は省略するか空文字列を渡します。最大長は 512 です。 |
searchAfter |
search_after |
旧ページネーション互換フィールド。Doris クエリでは使用されないため、__docid に基づいて独自に構築しないでください。 |
OpenAPI は selectClause と offset をサポートしません。ページネーションには cursorTime / cursorToken を使用してください。具体的な手順は後述します。
OpenAPI リクエスト例¶
サンプル内のワークスペース、トレース ID、時間範囲は実際の値に置き換えてください。ページネーション中はこれらのクエリ条件を変更しないでください。
curl --location 'https://<studio-backend-host>/api/v1/df/same_org/trace/query' \
--header 'Content-Type: application/json' \
--header 'DF-API-KEY: <your-openapi-key>' \
--data '{
"traceId": "TRACE-XXXX",
"workspaceUUIDs": ["wksp_xxx", "wksp_yyy"],
"startTime": 1772516130000,
"endTime": 1772519730000,
"limit": 100
}'
AIAPI リクエスト例¶
{
"trace_id": "TRACE-XXXX",
"workspace_uuids": ["wksp_xxx", "wksp_yyy"],
"where_clause": "`service` = 'api'",
"start_time": 1772516130000,
"limit": 100
}
Trace のスクロールページネーション¶
OpenAPI の単一結果は content.data[0] にあり、AIAPI の対応する位置は data.data[0] です。その中の next_cursor_time と next_cursor_token を読み取ります。
- 初回クエリではカーソルを省略できます。また、
cursorTime/cursor_timeをクエリ終了時間の 13 桁のミリ秒タイムスタンプに設定することもできます。 next_cursor_time < 0の場合はページネーションを終了します。この負の値を API に戻さないでください。- 次のページが必要な場合は、
next_cursor_timeをそのまま渡し、空でないnext_cursor_tokenも同時に渡します。後続のカーソルは 16 桁のマイクロ秒タイムスタンプの場合があるため、ミリ秒に変換しないでください。変換すると同じタイムスタンプ付近のデータが欠落する可能性があります。 next_cursor_tokenが空の場合は省略するか、空文字列を渡します。有効なnext_cursor_timeがない場合は、カーソルを独自に構築したり、リクエストを繰り返したりせず、レスポンスを記録して調査してください。
前のページで返された next_cursor_time が 1772519729000123、next_cursor_token が cursor_example の場合、OpenAPI の次ページのリクエストボディは次のとおりです。
{
"traceId": "TRACE-XXXX",
"workspaceUUIDs": ["wksp_xxx", "wksp_yyy"],
"startTime": 1772516130000,
"endTime": 1772519730000,
"limit": 100,
"cursorTime": 1772519729000123,
"cursorToken": "cursor_example"
}
上記のカーソルはあくまで例であり、実際のリクエストでは前のページのレスポンス値を使用する必要があります。AIAPI では cursor_time / cursor_token を使用し、その他のフィールドは前述のスネークケース命名に従います。startTime / endTime(または start_time / end_time)は元のミリ秒の時間範囲を維持し、ページネーションカーソルに合わせて換算しないでください。source やフィルタ条件を使用している場合も、ページ送り中は変更しないでください。
よくある質問¶
ft.ParameterCheckFailed が返る場合¶
同一組織内のクロスワークスペース Trace クエリスイッチが無効な状態で他のワークスペースをリクエストすると、OpenAPI はこのエラーを返します。対象ワークスペースが同一組織に属していない場合や、時間範囲や他のパラメータが不正な場合も同じエラーが返される可能性があるため、リクエストパラメータに基づいて調査してください。
対処方法:
- まず時間範囲、カーソル、ワークスペースの所属、サイト設定を確認します。
- 現在のワークスペースのみを照会する場合は、他のワークスペース UUID を削除します。
- どうしてもクロスワークスペースのクエリが必要な場合は、Studio バックエンドの設定で
SameOrgTraceQuerySet.enableを有効にしてサービスを再起動します。
従来の query_data API で同一組織のワークスペースリストを渡せますか¶
サポートされません。/api/v1/df/query_data、/api/v1/df/query_data_v1、/api/v1/df/asynchronous/query_data および AIAPI の通常の DQL クエリ API は、同一組織内のクロスワークスペース用のエントリパラメータを受け付けなくなりました。同一組織の Trace クエリ専用 API を使用してください。
終了時間を指定しない場合はどう照会しますか¶
endTime / end_time を指定しない場合、サーバー内部で構成される DQL time_range には開始時間のみが含まれます。開始時間も指定しない場合は、サーバーはデフォルトで直近 1 時間の開始時間を使用します。