SYSTEM$GET_SERVICE_STATUS

SYSTEM$GET_SERVICE_STATUS (서비스 상태 조회) — 더 이상 사용되지 않음

Snowpark Container Services 서비스의 상태를 가져와요.

출처: Snowflake SQL Reference - SYSTEM$GET_SERVICE_STATUS

본문

구문

SYSTEM$GET_SERVICE_STATUS( [ <db_name>.<schema_name>. ]<service_name> [ , <timeout_secs> ]  )

인자

필수:

service_name

서비스 이름이에요. db_name과 schema_name을 생략하면 함수는 현재 데이터베이스와 스키마를 사용해요.

선택:

timeout_secs

상태를 반환하기 전에 서비스가 안정 상태(예: READY)에 도달할 때까지 기다리는 시간(초)이에요. 지정한 시간 안에 서비스가 안정 상태에 도달하지 못하면 Snowflake는 현재 상태를 반환해요. 지정하지 않으면 Snowflake는 현재 상태를 즉시 반환해요. 기본값: 0초.

반환 값

각 서비스 인스턴스의 각 컨테이너에 대해 하나의 JSON 객체를 가진 JSON 배열로 상태 정보를 반환해요. JSON 필드는:

  • status: 서비스 컨테이너 상태. 현재 지원되는 상태 값: PENDING, READY, FAILED, UNKNOWN.
  • message: 특정 상태에 대한 세부 정보를 제공해요. 예를 들어 상태가 PENDING이면 이 필드는 그 이유를 설명해요.
  • containerName: 컨테이너 이름.
  • instanceId: 서비스 인스턴스 ID.
  • serviceName: 서비스 이름.
  • image: 실행 중인 이미지의 URL.
  • restartCount: Snowflake가 컨테이너를 다시 시작한 횟수. 다시 시작 횟수가 많을수록 서비스가 비정상임을 나타낼 수 있어요. 예를 들어 서비스 코드가 충돌하면 컨테이너가 종료될 수 있어요. 그러면 Snowflake가 컨테이너를 다시 시작하려고 시도해요. 이 경우 조사하기 위해 다음 옵션으로 컨테이너 로그에 접근할 수 있어요:
    • 실시간 로그는 SYSTEM$GET_SERVICE_LOGS 함수 사용(컨테이너가 실행 중일 때)
    • 영구 로그는 이벤트 테이블 사용(컨테이너가 더 이상 실행되지 않을 때 유용)
  • startTime: 컨테이너가 시작된 시간.

사용 참고 사항

  • 상태 정보를 얻으려면 현재 역할이 서비스에 대한 MONITOR 권한이 있어야 해요.

예시

다음 함수는 "echo_service" 서비스의 상태 정보를 가져와요. 함수는 5초 타임아웃을 지정해요:

SELECT SYSTEM$GET_SERVICE_STATUS('echo_service', 5);

예시 출력:

컨테이너가 하나 있는 서비스 인스턴스 하나가 실행 중이에요. 함수는 다음과 같이 컨테이너 정보를 반환해요:

[
 {
 "status":"READY",
 "message":"Running",
 "containerName":"echo",
 "instanceId":"0",
 "serviceName":"ECHO_SERVICE",
 "image":"<account>.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/my_echo_service_image:tutorial",
 "restartCount":0,
 "startTime":"2023-01-01T00:00:00Z"
 }
]

instanceId는 서비스 인스턴스 ID예요. 이 서비스 인스턴스가 두 개 실행 중이면 출력 배열에 객체가 두 개 포함되어 두 개의 별도 서비스 인스턴스의 컨테이너 상태를 제공해요(instanceId는 0과 1이 됨).

서비스 사양에 정의된 대로 컨테이너가 세 개 있는 서비스 인스턴스 하나가 실행 중이에요. 함수는 객체가 세 개(각 컨테이너 하나씩)인 배열을 반환해요:

[
  {
  "status":"READY",
  "message":"Running",
  "containerName":"echo-1",
  "instanceId":"0",
  "serviceName":"ECHO_SERVICE",
  "image":"<account>.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/my_echo_service_image_x:tutorial",
  "restartCount":0,
  "startTime":"2023-01-01T00:00:00Z"
  },
  {
  "status":"READY",
  "message":"Running",
  "containerName":"echo-2",
  "instanceId":"0",
  "serviceName":"ECHO_SERVICE",
  "image":"<account>.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/my_echo_service_image_y:tutorial",
  "restartCount":0,
  "startTime":"2023-01-01T00:00:00Z"
  },
  {
  "status":"READY",
  "message":"Running",
  "containerName":"echo-3",
  "instanceId":"0",
  "serviceName":"ECHO_SERVICE",
  "image":"<account>.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/my_echo_service_image_z:tutorial",
  "restartCount":0,
  "startTime":"2023-01-01T00:00:00Z"
  }
]

이 모든 컨테이너는 같은 서비스 인스턴스에 속하므로 모든 컨테이너의 instanceId는 0이에요.

더 알아보기