SYSTEM$GET_SERVICE_STATUS

Récupère le statut d’un service Snowpark Container Services.

Voir aussi :

Suivi d’un service

Syntaxe

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

Arguments

Obligatoire :

service_name

Nom du service. Si vous omettez les éléments db_name et schema_name, la fonction utilise la base de données et le schéma actuels.

Facultatif :

timeout_secs

Nombre de secondes à attendre pour que le service atteigne un état stable (par exemple, READY) avant de renvoyer le statut. Si le service n’atteint pas un état stable dans le délai spécifié, Snowflake renvoie l’état actuel.

S’il n’est pas spécifié, Snowflake renvoie immédiatement l’état actuel.

La valeur par défaut est 0 seconde.

Renvoie

Renvoie les informations de statut dans un tableau JSON avec un objet JSON pour chaque conteneur dans chaque instance de service. Les champs JSON sont les suivants :

  • status. Statut du conteneur de service. Les valeurs de statut actuellement prises en charge sont les suivantes : PENDING, READY, FAILED et UNKNOWN.

  • message. Fournit des détails sur le statut spécifique. Par exemple, lorsque le statut est PENDING, ce champ explique pourquoi.

  • containerName. Nom du conteneur.

  • instanceId. ID d’instance de service.

  • serviceName. Nom du service.

  • image. URL de l’image en cours d’exécution.

  • restartCount. Nombre de fois où Snowflake a redémarré le conteneur. Un nombre élevé de redémarrages peut indiquer que le service n’est pas en bonne santé. Par exemple, si votre code de service se bloque, le conteneur peut sortir. Snowflake tente alors de redémarrer le conteneur. Dans ce cas, pour enquêter, vous pouvez accéder au journal du conteneur en utilisant ces options :

    • Utilisez la fonction SYSTEM$GET_SERVICE_LOG pour les journaux en direct (le conteneur est en cours d’exécution).

    • Utilisez les tables d’événements pour les journaux persistants (utiles lorsque le conteneur n’est plus en cours d’exécution).

  • startTime. Heure à laquelle le conteneur a démarré.

Notes sur l’utilisation

  • Le rôle actuel doit avoir le privilège MONITOR sur le service pour obtenir les informations de statut.

Exemples

La fonction suivante permet de récupérer des informations sur le statut du service « echo_service ». La fonction spécifie un délai de 5 secondes :

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

Exemples de sorties :

  • Exécution d’une instance de service avec un seul conteneur. La fonction renvoie les informations sur le conteneur comme indiqué :

    [
     {
        "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 est l’ID d’instance de service. Si vous avez deux instances de ce service en cours d’exécution, le tableau inclut deux objets dans la sortie, fournissant le statut du conteneur pour deux instances de service distinctes (les instanceId seront 0 et 1).

  • Exécution d’une instance de service comportant trois conteneurs (tels que définis dans la spécification de service). La fonction renvoie un tableau contenant trois objets (un pour chaque conteneur) :

    [
      {
      "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

Comme tous ces conteneurs appartiennent à la même instance de service, le instanceId sera 0 pour tous les conteneurs.