쿼리 상태 조회

현재 세션의 계정에서 실행한 특정 포어그라운드 혹은 백그라운드 쿼리의 상태를 조회합니다.

필요 권한

사용자 이상의 계정이며 본인이 생성한 쿼리만 조회할 수 있습니다.

HTTP 요청

GET /api/sonar/queries/:id
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
     https://HOSTNAME/api/sonar/queries/12345

정상 응답

{
  "id": 60,
  "source": "adhoc",
  "login_name": "gildong",
  "remote_ip": "0:0:0:0:0:0:0:1",
  "rows": 32,
  "elapsed": 21,
  "is_finished": true,
  "is_cancelled": false,
  "is_scheduled_query": false,
  "constants": {},
  "query_string": "system tables",
  "start_time": 1663044689188,
  "finish_time": 1663044689209,
  "last_started": "2022-09-13 13:51:29+0900",
  "background": false,
  "commands": [
    {
      "command": "system tables",
      "status": "End",
      "push_count": 32
    }
  ],
  "sub_queries": [],
  "stamp": 5,
  "tags": {}
}
  • id (32비트 정수): 쿼리 ID

  • source (문자열): 쿼리 실행 유형

    • 사용자 임의 실행 (adhoc)
    • CLI 콘솔 실행 (console)
    • 예약된 쿼리 실행 (scheduled-query)
    • REST API 클라이언트 (rest-api)
    • 자바 클라이언트 (java-client)
    • 파이썬 클라이언트 (python-client)
    • 로그프레소 엔터프라이즈의 내부 실행 (system)
    • 로그프레소 소나의 내부 실행 (sonar)
    • 로그프레소 소나의 배치 탐지 시나리오 (batch-rule)
  • login_name (문자열): 로그인 계정 이름

  • remote_ip (문자열): 클라이언트 IP 주소. 로드밸런서를 거치는 경우에는 X-Forwarded-For 헤더 값이 사용됩니다.

  • rows (64비트 정수): 쿼리 결과 건수. 쿼리가 완료되기 전까지는 단조 증가할 수 있습니다.

  • elapsed (64비트 정수): 쿼리 실행 경과 시간 (밀리초 단위)

  • is_finished (불리언): 쿼리 완료 여부

  • is_cancelled (불리언): 쿼리 취소 요청 여부. 사용자가 명시적으로 취소 요청하거나, 명령어 내부 동작 중 실패(네트워크 오류 등)하여 쿼리가 취소될 수 있습니다. 쿼리 취소 요청 후 쿼리 완료까지 시간 차이가 있습니다.

  • is_scheduled_query (불리언): 예약 쿼리 여부

  • constants (맵): 상수 키-값 목록. 프로시저나 예약된 쿼리 실행 등 쿼리 매개변수를 전달할 때 사용됩니다.

  • query_string (문자열): 쿼리 문자열 원본 (최초 입력 형태 유지)

  • start_time (64비트 정수): 쿼리 시작 시각 (UNIX epoch)

  • finish_time (64비트 정수): 쿼리 완료 시각 (UNIX epoch)

  • last_started (문자열): 쿼리 시작 시각 (yyyy-MM-dd HH:mm:ssZ 형식)

  • background (불리언): 백그라운드 실행 여부. 포어그라운드 쿼리는 세션 종료 시 즉시 취소되지만, 백그라운드 쿼리는 세션을 종료해도 쿼리를 계속 실행합니다.

  • commands (배열): 쿼리를 구성하는 명령어 목록

    • command (문자열): 정규화된 쿼리 명령어
    • status (문자열): 명령어 실행 상태. 대기 (Waiting), 실행중 (Running), 완료중 (Finalizing), 완료 (End) 중 하나의 상태.
    • push_count (64비트 정수): 다음 명령어로 전달한 레코드의 수
  • sub_queries (배열): 서브 쿼리 목록

    • id (32비트 정수): 쿼리 ID
    • commands (배열): 명령어 목록
      • name (32비트 정수): 명령어 이름
      • command (문자열): 정규화된 명령어 구문
      • push_count (64비트 정수): 다음 명령어로 전달한 레코드 수
      • status (문자열): 명령어 실행 상태. 대기 (Waiting), 실행중 (Running), 완료중 (Finalizing), 완료 (End) 중 하나의 상태.
  • stamp (32비트 정수): 쿼리 상태 조회 버전. 클라이언트에서 동시에 2개 이상의 상태 조회 요청을 한 경우, 동일 쿼리 ID에 대한 최신 버전의 상태 응답을 구분하는 용도로 사용합니다.

  • tags (맵): 태그 키-값 목록. 클라이언트가 로그프레소 서버의 쿼리 객체에 임의의 휘발성 사용자 정의 데이터를 보관하는 용도로 사용합니다. (예: 쿼리별 페이징 건수)

오류 응답

쿼리가 존재하지 않는 경우

HTTP 상태 코드 403 응답. 쿼리가 존재하지 않거나 다른 계정에서 실행한 쿼리의 경우 쿼리 상태를 조회할 수 없습니다.

{
  "error_code": "invalid-query-id",
  "error_msg": "cannot access query 42"
}
쿼리 ID가 정수가 아닌 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-param-type",
  "error_msg": "query id should be integer type"
}