Execute Direct Query API

Execute Direct Query API

이 기능은 실험적 기능이라 프로덕션 환경에서는 사용을 권장하지 않아요. 기능 진행 상황에 대한 업데이트나 피드백이 있으면 OpenSearch 포럼에서 토론에 참여해 주세요.

데이터 소스의 네이티브 질의 언어를 사용해 외부 데이터 소스에 대해 질의를 실행해요.

이 API를 사용하기 전에 먼저 데이터 소스를 구성해야 해요. 데이터 소스 구성 방법은 Data sources 문서를 참고하세요.

출처: 문서

본문

엔드포인트 (Endpoint)

POST /_plugins/_directquery/_query/{dataSource}

경로 파라미터 (Path parameters)

다음 표는 사용 가능한 경로 파라미터를 나열해요.

Parameter Data type Description
dataSource String 질의할 구성된 데이터 소스의 이름이에요. 필수예요.

요청 본문 필드 (Request body fields)

다음 표는 사용 가능한 요청 본문 필드를 나열해요.

Field Data type Description
query String 데이터 소스의 네이티브 질의 언어로 실행할 질의예요(예: Prometheus의 PromQL). 필수예요.
language String 질의 언어예요. Prometheus 데이터 소스에는 PROMQL을 사용해요. 필수예요.
options Object 데이터 소스별 질의 옵션이에요. Prometheus options를 참고하세요. 선택 사항이에요.
maxResults Integer 반환할 최대 결과 수예요. Prometheus에만 적용돼요. 선택 사항이에요.
timeout Integer 질의 타임아웃(초 단위)이에요. Prometheus에만 적용돼요. 선택 사항이에요.
sessionId String 질의 추적을 위한 세션 식별자예요. 제공하지 않으면 UUID가 자동 생성돼요. 선택 사항이에요.

Prometheus 옵션

다음 옵션은 Prometheus 데이터 소스에 특화되어 있으며 options 객체에 제공해야 해요.

Field Data type Description
options.queryType String 질의 유형이에요. 유효한 값은 instant 또는 range예요. 기본값은 instant이에요. 선택 사항이에요.
options.time String instant 질의의 평가 타임스탬프로, Unix 타임스탬프로 지정해요. instant 질의에 필수예요.
options.start String range 질의의 시작 타임스탬프로, Unix 타임스탬프로 지정해요. range 질의에 필수예요.
options.end String range 질의의 종료 타임스탬프로, Unix 타임스탬프로 지정해요. range 질의에 필수예요.
options.step String range 질의의 질의 해상도 스텝 폭으로, 기간 형식으로 지정해요(예: 15s, 1m, 1h). range 질의에 필수예요.

예시 요청: Instant 질의

다음 요청은 Prometheus 데이터 소스에 대해 instant PromQL 질의를 실행해요.

POST /_plugins/_directquery/_query/my_prometheus
{
  "query": "up",
  "language": "PROMQL",
  "options": {
    "queryType": "instant"
  }
}

예시 요청: Range 질의

다음 요청은 시간 경과에 따른 CPU 사용량을 가져오는 range 질의를 실행해요.

POST /_plugins/_directquery/_query/my_prometheus
{
  "query": "rate(node_cpu_seconds_total{mode=\"user\"}[5m])",
  "language": "PROMQL",
  "options": {
    "queryType": "range",
    "start": "2024-01-01T00:00:00Z",
    "end": "2024-01-01T01:00:00Z",
    "step": "60s"
  }
}

예시 응답

{
  "queryId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "sessionId": "session-uuid-here",
  "results": {
    "status": "success",
    "data": {
      "resultType": "vector",
      "result": [
        {
          "metric": {
            "__name__": "up",
            "instance": "localhost:9090",
            "job": "prometheus"
          },
          "value": [1704067200, "1"]
        }
      ]
    }
  }
}

응답 본문 필드 (Response body fields)

다음 표는 모든 응답 본문 필드를 나열해요.

Field Data type Description
queryId String 실행된 질의의 고유 식별자예요.
sessionId String 관련 질의 추적을 위한 세션 식별자예요.
results Object 데이터 소스의 질의 결과로, 데이터 소스의 네이티브 응답 형식으로 반환돼요.

더 알아보기 (Learn more)