- 카테고리:
시스템 함수 (시스템 정보)
SYSTEM$GET_SERVICE_STATUS¶
Snowpark Container Services 서비스 의 상태를 검색합니다.
- 참고 항목:
구문¶
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이 됩니다.