- Kategorien:
Systemfunktionen (Systeminformationen)
SYSTEM$GET_SERVICE_STATUS¶
Ruft den Status eines Snowpark Container Services-Dienstes ab.
- Siehe auch:
Syntax¶
SYSTEM$GET_SERVICE_STATUS( [ <db_name>.<schema_name>. ]<service_name> [ , <timeout_secs> ] )
Argumente¶
Benötigt:
service_name
Name des Dienstes. Wenn Sie
db_name
undschema_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);
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" } ]
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 (dieinstanceId
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" } ]
Da alle diese Container zur gleichen Dienstinstanz gehören, wird instanceId
für alle Container zu 0.