Ereignisse für die Ausführung von Aufgaben überwachen

Sie können Snowflake so konfigurieren, dass ein Ereignis aufgezeichnet wird, das Informationen über den Status der Aufgabenausführung liefert. Das Ereignis wird in der aktiven Ereignistabelle aufgezeichnet, die mit der Aufgabe verbunden ist.

Nehmen Sie zum Beispiel an, dass Sie eine Ereignistabelle mit einer Datenbank verknüpft haben. Wenn eine Aufgabe in dieser Datenbank ausgeführt wird, zeichnet Snowflake ein Ereignis in dieser Ereignistabelle auf.

Sie können eine Benachrichtigung über neue Daten einrichten, um die Ereignistabelle zu überwachen. Sie können den Alarm so konfigurieren, dass eine Benachrichtigung gesendet wird, wenn eine Aufgabenausführung fehlschlägt.

In den nächsten Abschnitten erfahren Sie, wie Sie die Ereignisprotokollierung einrichten, um die Ereignisse zu erfassen, wie Sie die Benachrichtigung einrichten und wie Sie die in der Ereignistabelle aufgezeichneten Ereignisse interpretieren:

Bemerkung

Die Protokollierung von Ereignissen für Aufgaben ist mit Kosten verbunden. Siehe Kosten der Telemetriedatenerfassung.

Einschränkungen

  • Aufgabenereignisse werden für Snowflake Native Apps nicht unterstützt.

Schweregrad der zu erfassenden Ereignisse festlegen

Um Aufgabenereignisse einzurichten, die in der Ereignistabelle aufgezeichnet werden sollen, legen Sie den Schweregrad der Ereignisse fest, die in der Ereignistabelle erfasst werden sollen:

  • ERROR: Ereignisse für fehlgeschlagene Aufgabenläufe.

  • INFO: Ereignisse für erfolgreiche und fehlgeschlagene Aufgabenläufe.

Um die Ebene festzulegen, stellen Sie den Parameter LOG_LEVEL für das Konto oder Objekt ein. Sie können die Ebene festlegen für:

  • Alle Objekte im Konto,

  • Alle Objekte in einer Datenbank oder einem Schema

  • Eine bestimmte Aufgabe.

Bemerkung

Wenn der Schweregrad für das Konto oder Objekt nicht festgelegt ist, werden keine Ereignisse erfasst.

Beispiel:

  • Um Ereignisse und Meldungen auf ERROR-Ebene für alle Objekte des Kontos zu erfassen, führen Sie ALTER ACCOUNT SET LOG_LEVEL aus:

    ALTER ACCOUNT SET LOG_LEVEL = ERROR;
    
    Copy

    Beachten Sie, dass diese Ebene alle Arten von Objekten im Konto betrifft, einschließlich UDFs, gespeicherte Prozeduren, dynamische Tabellen und Aufgaben.

  • Um Ereignisse und Meldungen auf INFO-Ebene für alle Objekte in der Datenbank my_db zu erfassen, führen Sie ALTER DATABASE … SET LOG_LEVEL aus:

    ALTER DATABASE my_db SET LOG_LEVEL = INFO;
    
    Copy

    Ähnlich wie bei der Einstellung der Ebene für das Konto wirkt sich die Einstellung der Ebene für die Datenbank auf alle Arten von Objekten in der Datenbank aus, einschließlich UDFs, gespeicherte Prozeduren, dynamische Tabellen und Aufgaben.

  • Um Ereignisse auf ERROR-Ebene für die Aufgabe my_task zu erfassen, führen Sie ALTER TASK. .. SET LOG_LEVEL aus:

    ALTER TASK my_task SET LOG_LEVEL = ERROR;
    
    Copy

Richten Sie eine Benachrichtigung über neue Daten für Aufgabenerledigungsereignisse ein

Nachdem Sie den Schweregrad für Protokollierereignisse festgelegt haben, können Sie eine Benachrichtigung über neue Daten einrichten, um die Ereignistabelle auf neue Ereignisse zu überwachen, die auf einen Fehler bei einer Aufgabenerledigung hinweisen. Eine Benachrichtigung über neue Daten wird ausgelöst, wenn neue Zeilen in die Ereignistabelle eingefügt werden, die die in der Benachrichtigung angegebene Bedingung erfüllen.

Bemerkung

Um die Benachrichtigung über neue Daten zu erstellen, müssen Sie eine Rolle verwenden, die über die erforderlichen Berechtigungen zur Abfrage der Ereignistabelle verfügt.

In der Benachrichtigungsbedingung wählen Sie für die Abfrage nach Aufgabenerledigungsereignissen Zeilen aus, in denen resource_attributes:"snow.executable.type" = 'TASK'. Um die Liste der Ereignisse einzugrenzen, können Sie nach folgenden Spalten filtern:

  • Um die Ergebnisse auf Aufgaben in einer bestimmten Datenbank zu beschränken, verwenden Sie resource_attributes:"snow.database.name".

  • Um Ereignisse zurückzugeben, bei denen die Aufgabenausführung fehlgeschlagen ist, verwenden Sie value:state = 'FAILED'.

Informationen zu den Werten, die für ein Ereignis der Aufgabenausführung protokolliert werden, finden Sie unter Für Aufgabenereignisse protokollierte Informationen.

Die folgende Anweisung erstellt beispielsweise eine Benachrichtigung für neue Daten, der eine Aktion ausführt, wenn Aufgabenerledigungen für Aufgaben in der Datenbank my_db fehlschlagen. Das Beispiel geht davon aus, dass:

CREATE ALERT my_alert_on_task_failures
  IF( EXISTS(
    SELECT * FROM SNOWFLAKE.TELEMETRY.EVENT_TABLE
      WHERE resource_attributes:"snow.executable.type" = 'task'
        AND resource_attributes:"snow.database.name" = 'my_db'
        AND record:"severity_text" = 'ERROR'
        AND value:"state" = 'FAILED'))
  THEN
    BEGIN
      LET result_str VARCHAR;
      (SELECT ARRAY_TO_STRING(ARRAY_ARG(name)::ARRAY, ',') INTO :result_str
         FROM (
           SELECT resource_attributes:"snow.executable.name"::VARCHAR name
             FROM TABLE(RESULT_SCAN(SNOWFLAKE.ALERT.GET_CONDITION_QUERY_UUID()))
             LIMIT 10
         )
      );
      CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
        SNOWFLAKE.NOTIFICATION.TEXT_PLAIN(:result_str),
        '{"my_slack_integration": {}}'
      );
    END;
Copy

Abfrage der Ereignistabelle nach Aufgabenerledigungsereignissen

Sie können die Ereignistabelle auch nach Ereignissen abfragen, die darauf hinweisen, dass eine Aufgabenerledigung fehlgeschlagen ist.

Informationen über die Rolle, die Sie für die Abfrage der Ereignistabelle verwenden müssen, und die Bedingungen, die Sie zum Filtern der Ergebnisse verwenden können, finden Sie unter Richten Sie eine Benachrichtigung über neue Daten für Aufgabenerledigungsereignisse ein.

Zum Beispiel, um den Zeitstempel, den Aufgabennamen, die Abfrage-ID und die Fehlermeldung bei Fehlern mit Aufgaben in der Datenbank my_db zu erhalten:

SELECT
    timestamp,
    resource_attributes:"snow.executable.name"::VARCHAR AS task_name,
    resource_attributes:"snow.query.id"::VARCHAR AS query_id,
    value:message::VARCHAR AS error
  FROM my_event_table
  WHERE
    resource_attributes:"snow.executable.type" = 'TASK' AND
    resource_attributes:"snow.database.name" = 'MY_DB' AND
    value:state = 'FAILED'
  ORDER BY timestamp DESC;
Copy
+-------------------------+-----------+--------------------------------------+------------------------------------------------------+
| TIMESTAMP               | TASK_NAME | QUERY_ID                             | ERROR                                                |
|-------------------------+-----------+--------------------------------------+------------------------------------------------------|
| 2025-02-18 00:21:19.461 | T1        | 01ba76b5-0107-e56d-0000-a995024f4222 | 002003: SQL compilation error:                       |
|                         |           |                                      | Object 'MY_TABLE' does not exist or not authorized.  |
+-------------------------+-----------+--------------------------------------+------------------------------------------------------+

Das folgende Beispiel ruft alle Spalten für Fehler mit Aufgaben im Schema my_schema ab:

SELECT *
  FROM my_event_table
  WHERE
    resource_attributes:"snow.executable.type" = 'FAILED' AND
    resource_attributes:"snow.schema.name" = 'MY_SCHEMA' AND
    value:state = 'FAILED'
  ORDER BY timestamp DESC;
Copy
+-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------+
| TIMESTAMP               | START_TIMESTAMP | OBSERVED_TIMESTAMP      | TRACE | RESOURCE | RESOURCE_ATTRIBUTES                                        | SCOPE | SCOPE_ATTRIBUTES | RECORD_TYPE | RECORD                        | RECORD_ATTRIBUTES | VALUE                                                                                                | EXEMPLARS |
|-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------|
| 2025-02-18 00:21:19.461 | NULL            | 2025-02-18 00:21:19.461 | NULL  | NULL     | {                                                          | NULL  | NULL             | EVENT       | {                             | NULL              | {                                                                                                    | NULL      |
|                         |                 |                         |       |          |   "snow.database.id": 49,                                  |       |                  |             |   "name": "execution.status", |                   |   "message": "002003: SQL compilation error:\nObject 'EMP_TABLE' does not exist or not authorized.", |           |
|                         |                 |                         |       |          |   "snow.database.name": "MY_DB",                        |       |                  |                |   "severity_text": "ERROR"    |                   |   "state": "FAILED"                                                                                  |           |
|                         |                 |                         |       |          |   "snow.executable.id": 518,                               |       |                  |             | }                             |                   | }                                                                                                    |           |
|                         |                 |                         |       |          |   "snow.executable.name": "T1",                            |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.executable.type": "TASK",                          |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.owner.id": 2601,                                   |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.owner.name": "DATA_ADMIN",                         |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.owner.type": "ROLE",                               |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.query.id": "01ba76b5-0107-e56d-0000-a995024f4222", |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.schema.id": 411,                                   |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.schema.name": "MY_SCHEMA",                      |       |                  |             |                               |                   |                                                                                                      |              |
|                         |                 |                         |       |          |   "snow.warehouse.id": 41,                                 |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.warehouse.name": "INTAKE_WAREHOUSE"                |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          | }                                                          |       |                  |             |                               |                   |                                                                                                      |           |
+-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------+

Für Aufgabenereignisse protokollierte Informationen

Wenn eine Aufgabe ausgeführt wird, wird ein Ereignis in der Ereignistabelle protokolliert. Die folgenden Abschnitte beschreiben die Zeile der Ereignistabelle, die das Ereignis darstellt:

Spaltenwerte der Ereignistabelle

Wenn eine Aufgabe erledigt wird oder fehlschlägt, wird eine Zeile mit den folgenden Werten in die Ereignistabelle eingefügt.

Bemerkung

Wenn eine Spalte unten nicht aufgeführt ist, ist der Spaltenwert für das Ereignis NULL.

Spalte

Datentyp

Beschreibung

timestamp

TIMESTAMP_NTZ

UTC-Zeitstempel für den Zeitpunkt, an dem das Ereignis erstellt wurde.

observed_timestamp

TIMESTAMP_NTZ

UTC-Zeit, die für Protokolle verwendet wird. Derzeit ist dies derselbe Wert, der in der Spalte timestamp steht.

resource_attributes

OBJECT

Attribute, die identifizieren, dass die Aufgabe ausgeführt wurde.

record_type

STRING

Der Ereignistyp, der EVENT für Aufgabenausführungen ist.

record

OBJECT

Details über den Status der Aufgabenausführung.

value

VARIANT

Der Status der Aufgabenausführung und, falls die Ausführung fehlgeschlagen ist, die Fehlermeldung für den Fehler.

Schlüssel-Wert-Paare in der Spalte resource_attributes

Die Spalte resource_attributes enthält einen Wert OBJECT mit den folgenden Schlüssel-Wert-Paaren:

Attributname

Attributtyp

Beschreibung

Beispiel

snow.database.id

INTEGER

Der interne/systemgenerierte Bezeichner der Datenbank, die die Aufgabe enthält.

12345

snow.database.name

VARCHAR

Der Name der Datenbank, die die Aufgabe enthält.

MY_DATABASE

snow.executable.id

INTEGER

Der interne/systemgenerierte Bezeichner der Aufgabe, die ausgeführt wurde.

12345

snow.executable.name

VARCHAR

Der Name der Aufgabe, die ausgeführt wurde.

MY_TASK

snow.executable.type

VARCHAR

Der Typ des Objekts. Der Wert ist TASK für Aufgabenereignisse.

TASK

snow.owner.id

INTEGER

Der interne/systemgenerierte Bezeichner der Rolle mit der Berechtigung OWNERSHIP für die Aufgabe.

12345

snow.owner.name

VARCHAR

Der Name der Rolle mit der Berechtigung OWNERSHIP für die Aufgabe.

MY_ROLE

snow.owner.type

VARCHAR

Der Typ der Rolle, die Eigentümer des Objekts ist, zum Beispiel ROLE. . Wenn eine Snowflake Native App Eigentümer des Objekts ist, ist der Wert APPLICATION. . Wenn Sie das Objekt löschen, gibt Snowflake den Wert NULL zurück, da ein gelöschtes Objekt keine Eigentümerrolle hat.

ROLE

snow.query.id

VARCHAR

ID der Abfrage, die die Aufgabe ausgeführt hat.

01ba7614-0107-e56c-0000-a995024f304a

snow.schema.id

INTEGER

Der interne/systemgenerierte Bezeichner des Schemas, das die Aufgabe enthält.

12345

snow.schema.name

VARCHAR

Der Name des Schemas, das die Aufgabe enthält.

MY_SCHEMA

snow.warehouse.id

INTEGER

Der interne/systemgenerierte Bezeichner des Warehouse, das zur Ausführung der Aufgabe verwendet wird.

12345

snow.warehouse.name

VARCHAR

Der Name des Warehouse, das für die Ausführung der Aufgabe verwendet wird.

MY_WAREHOUSE

Schlüssel-Wert-Paare in der Spalte record

Die Spalte record enthält einen Wert OBJECT mit den folgenden Schlüssel-Wert-Paaren:

Schlüssel

Typ

Beschreibung

Beispiel

name

VARCHAR

Der Name des Ereignisses. Der Wert ist execution.status für Aufgabenausführungen.

execution.status

severity_text

VARCHAR

Der Schweregrad des Ereignisses, der einen der folgenden Werte annehmen kann:

  • INFO: Die Aufgabenausführung war erfolgreich.

  • ERROR: Die Aufgabenausführung ist fehlgeschlagen.

INFO

Schlüssel-Wert-Paare in der Spalte value

Die Spalte value enthält einen Wert VARIANT mit den folgenden Schlüssel-Wert-Paaren:

Schlüssel

Typ

Beschreibung

Beispiel

state

VARCHAR

Der Status der Aufgabenausführung, der einer der folgenden Werte sein kann:

  • SUCCEEDED: Die Aufgabenausführung war erfolgreich.

  • ERROR: Die Aufgabenausführung ist fehlgeschlagen.

SUCCEEDED

message

VARCHAR

Wenn der Wert in state ERROR lautet, enthält diese Spalte die Fehlermeldung.