Surveillance des événements liés aux exécutions de tâches

Vous pouvez configurer Snowflake pour qu’il enregistre un événement fournissant des informations sur le statut de l’exécution d’une tâche. L’événement est enregistré dans la table d’événements active associée à la tâche.

Par exemple, supposons que vous ayez associé une table d’événements à une base de données. Lorsqu’une tâche de cette base de données s’exécute, Snowflake enregistre un événement dans cette table d’événements.

Vous pouvez paramétrer une alerte sur les nouvelles données pour surveiller la table des événements. Vous pouvez configurer l’alerte de manière à envoyer une notification lorsque l’exécution d’une tâche échoue.

Les sections suivantes expliquent comment configurer la connexion des événements pour enregistrer les événements, comment configurer l’alerte et comment interpréter les événements enregistrés dans la table des événements :

Note

La journalisation des événements relatifs aux tâches engendre des coûts. Voir Coûts de la collecte de données de télémétrie.

Limitations

  • Les événements de tâche ne sont pas pris en charge pour les Snowflake Native Apps.

Définition du niveau de gravité des événements sur capturer

Pour paramétrer les événements de tâche à enregistrer dans la table d’événements, définissez les niveaux de gravité des événements que vous souhaitez capturer dans cette table :

  • ERROR : événements relatifs à l’échec de l’exécution des tâches.

  • INFO : événements relatifs à la réussite et à l’échec des exécutions d’une tâche.

Pour définir le niveau, il convient de définir le paramètre LOG_LEVEL pour le compte ou l’objet. Vous pouvez définir le niveau pour :

  • Tous les objets du compte

  • Tous les objets d’une base de données ou d’un schéma.

  • Une tâche spécifique

Note

Si le niveau de gravité n’est pas paramétré sur le compte ou l’objet, aucun événement ne sera capturé.

Par exemple :

  • Pour capturer les événements et les messages de niveau ERROR pour tous les objets du compte, exécutez ALTER ACCOUNT SET LOG_LEVEL :

    ALTER ACCOUNT SET LOG_LEVEL = ERROR;
    
    Copy

    Notez que ce niveau affecte tous les types d’objets du compte, y compris les UDFs, les procédures stockées, les tables dynamiques et les tâches.

  • Pour capturer les événements et les messages de niveau INFO pour tous les objets de la base de données my_db, exécutez ALTER DATABASE … SET LOG_LEVEL :

    ALTER DATABASE my_db SET LOG_LEVEL = INFO;
    
    Copy

    Comme dans le cas de la définition du niveau du compte, la définition du niveau de la base de données affecte tous les types d’objets de la base de données, y compris les UDFs, les procédures stockées, les tables dynamiques et les tâches.

  • Pour capturer les événements de niveau ERROR pour la tâche my_task, exécutez ALTER TASK. .. SET LOG_LEVEL :

    ALTER TASK my_task SET LOG_LEVEL = ERROR;
    
    Copy

Paramétrer une alerte sur les nouvelles données pour les événements d’achèvement de tâche

Après avoir défini le niveau de gravité des événements à enregistrer, vous pouvez configurer une alerte sur les nouvelles données pour surveiller la table d’événements afin d’y détecter de nouveaux événements indiquant l’échec de l’achèvement d’une tâche. Une alerte sur les nouvelles données est déclenchée lorsque de nouvelles lignes sont insérées dans la table de l’événement et remplissent la condition spécifiée dans l’alerte.

Note

Pour créer l’alerte sur de nouvelles données, vous devez utiliser un rôle qui a reçu les privilèges nécessaires pour interroger la table des événements.

Dans la condition d’alerte, pour effectuer une requête sur les événements d’achèvement de tâche, sélectionnez les lignes où resource_attributes:"snow.executable.type" = 'TASK'. Pour réduire la liste des événements, vous pouvez filtrer sur les colonnes suivantes :

  • Pour limiter les résultats aux tâches d’une base de données spécifique, utilisez resource_attributes:"snow.database.name".

  • Pour renvoyer les événements où l’exécution de la tâche a échoué, utilisez value:state = 'FAILED'.

Pour obtenir des informations sur les valeurs connectées à un événement d’exécution de tâche, voir Informations enregistrées pour les événements de tâche.

Par exemple, l’instruction suivante crée une alerte sur les nouvelles données qui effectue une action en cas d’échec de l’achèvement des tâches de la base de données my_db. L’exemple part du principe que :

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

Interroger la table d’événements pour détecter les événements d’achèvement de tâche

Vous pouvez également interroger la table d’événements pour rechercher les événements indiquant l’échec de l’achèvement d’une tâche.

Pour plus d’informations sur le rôle que vous devez utiliser pour interroger la table d’événements et sur les conditions utilisables pour filtrer les résultats, voir Paramétrer une alerte sur les nouvelles données pour les événements d’achèvement de tâche.

Par exemple, pour obtenir l’horodatage, le nom de la tâche, l’ID de requête et le message d’erreur pour les erreurs associées aux tâches de la base de données my_db :

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.  |
+-------------------------+-----------+--------------------------------------+------------------------------------------------------+

L’exemple suivant récupère toutes les colonnes pour détecter les erreurs associées aux tâches du schéma my_schema :

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"                |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          | }                                                          |       |                  |             |                               |                   |                                                                                                      |           |
+-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------+

Informations enregistrées pour les événements de tâche

Lorsqu’une tâche s’exécute, un événement est enregistré dans la table d’événements. Les sections suivantes décrivent la ligne de la table des événements qui représente l’événement :

Valeurs des colonnes de la table des événements

Lorsqu’une tâche s’achève ou échoue, une ligne contenant les valeurs suivantes est insérée dans la table d’événements.

Note

Si une colonne n’est pas listée ci-dessous, la valeur de la colonne est NULL pour l’événement.

Colonne

Type de données

Description

timestamp

TIMESTAMP_NTZ

L’horodatage UTC de la création d’un événement.

observed_timestamp

TIMESTAMP_NTZ

Un horaire UTC utilisé pour les journaux. Actuellement, il s’agit de la même valeur que celle qui figure dans la colonne timestamp.

resource_attributes

OBJECT

Attributs identifiant la tâche qui a été exécutée.

record_type

STRING

Le type d’événement, soit EVENT pour les exécutions de tâche.

record

OBJECT

Détails sur le statut de l’exécution de la tâche.

value

VARIANT

Le statut de l’exécution de la tâche et, si l’exécution a échoué, le message d’erreur correspondant.

Paires de valeurs clés dans la colonne resource_attributes

La colonne resource_attributes contient une valeur OBJECT avec les paires clés-valeurs suivantes :

Nom d’attribut

Type d’attribut

Description

Exemple

snow.database.id

INTEGER

L’identificateur interne/généré par le système de la base de données contenant la tâche.

12345

snow.database.name

VARCHAR

Le nom de la base de données contenant la tâche.

MY_DATABASE

snow.executable.id

INTEGER

L’identificateur interne/généré par le système de la tâche qui a été exécutée.

12345

snow.executable.name

VARCHAR

Le nom de la tâche qui a été exécutée.

MY_TASK

snow.executable.type

VARCHAR

Le type de l’objet. La valeur est TASK pour les événements de tâche.

TASK

snow.owner.id

INTEGER

L’identificateur interne/généré par le système du rôle ayant le privilège OWNERSHIP sur la tâche.

12345

snow.owner.name

VARCHAR

Le nom du rôle ayant le privilège OWNERSHIP sur la tâche.

MY_ROLE

snow.owner.type

VARCHAR

Type de rôle qui possède l’objet, par exemple ROLE. . Si une Snowflake Native App est propriétaire de l’objet, la valeur est APPLICATION. . Snowflake renvoie NULL si vous supprimez l’objet, car un objet supprimé n’a pas de rôle propriétaire.

ROLE

snow.query.id

VARCHAR

ID de la requête qui a exécuté la tâche.

01ba7614-0107-e56c-0000-a995024f304a

snow.schema.id

INTEGER

L’identificateur interne/généré par le système du schéma contenant la tâche.

12345

snow.schema.name

VARCHAR

Le nom du schéma contenant la tâche.

MY_SCHEMA

snow.warehouse.id

INTEGER

L’identificateur interne/généré par le système de l’entrepôt utilisé pour exécuter la tâche.

12345

snow.warehouse.name

VARCHAR

Le nom de l’entrepôt utilisé pour l’exécution de la tâche.

MY_WAREHOUSE

Paires de valeurs clés dans la colonne record

La colonne record contient une valeur OBJECT avec les paires clés-valeurs suivantes :

Clé

Type

Description

Exemple

name

VARCHAR

Le nom de l’événement. La valeur est execution.status pour les exécutions de tâche.

execution.status

severity_text

VARCHAR

Le niveau de gravité de l’événement, qui correspond à l’une des valeurs suivantes :

  • INFO : l’exécution de la tâche a réussi.

  • ERROR : l’exécution de la tâche a échoué.

INFO

Paires de valeurs clés dans la colonne value

La colonne value contient une valeur VARIANT avec les paires clés-valeurs suivantes :

Clé

Type

Description

Exemple

state

VARCHAR

L’état de l’exécution de la tâche, qui peut prendre l’une des valeurs suivantes :

  • SUCCEEDED : l’exécution de la tâche a réussi.

  • ERROR : l’exécution de la tâche a échoué.

SUCCEEDED

message

VARCHAR

Si la valeur de state est ERROR, cette colonne contient le message d’erreur.