Kategorien:

Systemfunktionen (Systeminformationen)

SYSTEM$GET_SERVICE_STATUS

Ruft den Status eines Snowpark Container Services-Dienstes ab.

Siehe auch:

Überwachen von Diensten

Syntax

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

Argumente

Benötigt:

service_name

Name des Dienstes. Wenn Sie db_name und schema_name weglassen, verwendet die Funktion die aktuelle Datenbank und das aktuelle Schema.

Optional:

timeout_secs

Anzahl der Sekunden, die gewartet wird, bis der Dienst einen Endzustand (z. B. READY) erreicht hat, bevor der Status zurückgegeben wird. Wenn der Dienst den Endzustand nicht innerhalb der spezifizierten Zeit erreicht, gibt Snowflake den aktuellen Status zurück.

Wenn nicht angegeben, gibt Snowflake sofort den aktuellen Status zurück.

Der Standard ist 0 Sekunden.

Rückgabewerte

Gibt Statusinformationen in einem JSON-Array mit einem JSON-Objekt für jeden Container in jeder Dienstinstanz zurück. Die JSON-Felder sind:

  • status. Status des Dienstcontainers. Derzeit werden folgende Statuswerte unterstützt: PENDING, READY, FAILED und UNKNOWN.

  • message. Stellt Details über den spezifischen Status bereit. Wenn der Status z. B. PENDING ist, wird in diesem Feld beschrieben, warum.

  • containerName. Name des Containers.

  • instanceId. Dienstinstanz-ID.

  • serviceName. Name des Dienstes.

  • image. URL des in Ausführung befindlichen Images.

  • restartCount. Häufigkeit, mit der Snowflake den Container neu gestartet hat. Eine höhere Anzahl von Neustarts kann auf einen problembehafteten Dienst hindeuten. Wenn zum Beispiel Ihr Dienstcode abstürzt, kann der Container beendet werden. Snowflake versucht dann, den Container neu zu starten. In diesem Fall können Sie mit diesen Optionen auf das Containerprotokoll zugreifen, um die Situation zu untersuchen:

    • Verwenden Sie die Funktion SYSTEM$GET_SERVICE_LOGS für Live-Protokolle (wenn der Container ausgeführt wird).

    • Verwenden Sie Ereignistabellen für dauerhafte Protokolle (nützlich, wenn der Container nicht mehr ausgeführt wird).

  • startTime. Zeitpunkt des Starts des Containers.

Nutzungshinweise

  • Die aktuelle Rolle muss die Berechtigung MONITOR für den Dienst haben, um die Statusinformationen abzurufen.

Beispiele

Die folgende Funktion ruft Statusinformationen für den Dienst „echo_service“ ab. Die Funktion gibt ein Timeout von 5 Sekunden an:

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

Beispielausgaben:

  • Ausführen einer Dienstinstanz, die einen Container hat. Die Funktion gibt die Containerinformationen wie gezeigt zurück:

    [
     {
        "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 ist die Dienstinstanz-ID. Wenn Sie zwei Instanzen dieses Dienstes ausführen, enthält das Array zwei Objekte in der Ausgabe, die den Containerstatus für zwei separate Dienstinstanzen bereitstellen (die instanceId werden 0 und 1 sein).

  • Ausführen einer Dienstinstanz mit drei Containern (wie in der Dienstspezifikation definiert). Die Funktion gibt ein Array mit drei Objekten zurück (eines für jeden Container):

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

Da alle diese Container zur gleichen Dienstinstanz gehören, wird instanceId für alle Container zu 0.