类别:

系统函数 (系统信息)

SYSTEM$GET_SERVICE_STATUS

检索 Snowpark Container Services 服务 的状态。

另请参阅:

监控服务

语法

SYSTEM$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_LOGS 函数查看实时日志(容器正在运行)。

    • 使用事件表记录持久日志(当容器不再运行时非常有用)。

  • 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.cn/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.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"
      }
    ]
    
    Copy

因为所有这些容器都属于同一个服务实例,所以 instanceId 对所有容器来说都是 0。

语言: 中文