SYSTEM$GET_SERVICE_STATUS

Snowpark Container Services 서비스의 상태를 검색합니다.

참고 항목:

서비스 모니터링하기

구문

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

인자

필수:

service_name

서비스 이름입니다. db_nameschema_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_LOG 함수를 사용합니다.

    • 영구 로그(컨테이너가 더 이상 실행되지 않을 때 유용함)에는 이벤트 테이블을 사용합니다.

  • startTime. 컨테이너가 시작된 시간입니다.

사용법 노트

  • 상태 정보를 가져오려면 현재 역할에 서비스에 대한 MONITOR 권한이 있어야 합니다.

다음 함수는 《echo_service》 서비스에 대한 상태 정보를 검색합니다. 이 함수는 5초의 시간 제한을 지정합니다.

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

예제 출력:

  • 하나의 컨테이너가 있는 하나의 서비스 인스턴스 실행 중. 이 함수는 다음과 같이 컨테이너 정보를 반환합니다.

    [
     {
        "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"
     }
    ]
    
    Copy

    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"
      }
    ]
    
    Copy

이러한 모든 컨테이너는 동일한 서비스 인스턴스에 속하므로 instanceId 는 모든 컨테이너에 대해 0이 됩니다.