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秒

戻り値

各サービスインスタンスの各コンテナに対して、1つの 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

出力例:

  • 1つのコンテナを持つサービスインスタンス1つを実行中。 この関数は、以下に示されているようにコンテナ情報を返します、

    [
     {
        "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 です。このサービスのインスタンスが2つ実行されている場合、配列は2つのオブジェクトを出力に含み、2つの別々のサービスインスタンスのコンテナステータスを提供します(instanceId は0と1になります)。

  • 3つのコンテナを持つサービスインスタンス1つを実行中。 この関数は、3つのオブジェクト(各コンテナに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になります。