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 |
파라미터 추가 설명¶
조회 설명
응답 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 | Y | 조회 요청 본문 |
| queries_body[*] | string | (구버전 파라미터, 2023-08-10일자로 제외됨) 조회 목록 | |
| search_after | string | (구버전 파라미터, 2023-08-10일자로 제외됨, 신규 파라미터 위치는 query 구조체로 이동됨) 조회 페이지 데이터. 최초 조회는 기본값 []이며, 더 많은 페이지 데이터를 조회해야 하는 경우 이전 조회 결과의 search_after 필드를 추가하여 후속 데이터를 조회합니다. |
- 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일 때 적용, promql 조회 유형, instantQuery 및 rangeQuery 선택 가능, 기본값은 rangeQuery |
|
| query.highlight | boolean | 하이라이트 데이터 표시 여부 | |
| query.timeRange | array | 시간 범위의 타임스탬프 목록 | |
| query.disableMultipleField | bool | 단일 열 모드 활성화 여부, 기본값은 true |
|
| query.showLabel | bool | 객체의 labels 표시 여부, 기본값은 없음 | |
| 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 in ["desc", "asc"]; 메저먼트 조회의 정렬은 fieldName=time만 지원함 |
|
| 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 | 페이지 표시, 현재 인터페이스에서 반환된 페이지 표시로, 다음 요청 시 전달 | |
| query.maxPointCount | integer | 최대 포인트 수 | |
| query.workspaceUUID | string | 조회할 워크스페이스의 uuid, "*"는 모든 권한이 부여된 워크스페이스 조회, 워크스페이스 참조 인터페이스 /wksp_share/granted_ws_list 확인 가능 | |
| query.workspaceUUIDs | array | 조회할 워크스페이스의 uuids, 우선순위는 query.workspaceUUID보다 높음. ["*"]는 모든 권한이 부여된 워크스페이스 조회, 워크스페이스 참조 인터페이스 /wksp_share/granted_ws_list 확인 가능 | |
| query.targetRegion | string | 조회 워크스페이스가 ["*"]로 지정된 경우, 이 필드는 필수 | |
| query.output_format | string | lineprotocol: 라인 프로토콜 출력, 기본값 미입력 시 기존 출력 형식 유지 | |
| query.cursor_time | integer | 세그먼트 조회 임계값: 첫 번째 세그먼트 조회 시 cursor_time을 end_time으로 설정해야 함; 이후 세그먼트 조회 시 cursor_time을 응답의 next_cursor_time으로 설정해야 함 | |
| query.cursor_token | string | 페이지 조회 token(엔진이 cursor_token 값을 반환): 페이지 조회 시, 이전 조회에서 반환된 next_cursor_token을 현재 조회의 cursor_token으로 설정해야 함. cursor_token이 없는 요청은 페이지 넘김 시 동일 타임스탬프의 데이터가 건너뛰어질 수 있음. | |
| query.disable_sampling | bool | 샘플링 비활성화 스위치, 기본값 false | |
| query.disable_truncate | bool | 조회 시 반환 내용을 자를지 여부, 기본값 없음 |
- 응답 포인트 밀도
density파라미터 값 설명
| 선택 가능 값 | 설명 |
|---|---|
| lower | 낮음, 60개 포인트 |
| low | 낮음, 180개 포인트 |
| medium | 중간, 360개 포인트 |
| high | 높음, 720개 포인트 |
-
포인트 밀도 파라미터의 우선순위: 최대 밀도
density[high]* maxPointCount > interval > density > dql 문의 제어 파라미터 -
일반 조회 설명
참고: 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"
}