- 类别:
系统函数 (系统信息)
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.cn/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.cn/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.cn/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.cn/tutorial_db/data_schema/tutorial_repository/my_echo_service_image_z:tutorial", "restartCount":0, "startTime":"2023-01-01T00:00:00Z" } ]
因为所有这些容器都属于同一个服务实例,所以 instanceId
对所有容器来说都是 0。