Configurer le traçage des événements pour une application¶
Cette rubrique décrit comment configurer le traçage des événements pour capturer les messages de journal et les événements de trace émis par une application. Elle décrit également comment activer le partage d’événements pour partager des messages de journal et des événements de trace avec des fournisseurs.
À propos du traçage des événements dans le Snowflake Native App Framework¶
Le traçage d’événements permet à une application d’émettre des informations liées à ses performances et à son comportement. Le Snowflake Native App Framework prend en charge l’utilisation de la fonctionnalité de la journalisation et du traçage de Snowflake afin de recueillir ces informations. Une application peut émettre les éléments suivants :
Les messages de journal sont des messages indépendants et détaillés contenant des informations sur l’état d’une fonctionnalité spécifique de l’application.
Les événements de trace contiennent des données structurées que vous pouvez utiliser pour obtenir des informations couvrant et regroupant plusieurs parties d’une application.
Voir les messages de journal et les événements d’une application¶
Pour voir les messages de journal et les événements de trace émis par l’application, les consommateurs doivent configurer une table d’événements dans leur compte pour collecter ces informations. Consultez Configurer une table d’événements pour plus d’informations.
À propos du partage d’événements¶
Les consommateurs peuvent également activer le partage d’événements pour partager des données d’événements avec les fournisseurs. Lorsqu’un fournisseur active le partage d’événements, les messages de journal et les événements de trace insérés dans la table d’événements du compte consommateur sont également insérés dans une table d’événements du compte fournisseur.
Le partage d’événements permet au fournisseur de collecter des informations sur les performances et le comportement de l’application. Consultez À propos du partage d’événements pour une application pour plus d’informations.
À propos des définitions d’événements¶
Les définitions d’événements spécifient comment une application partage les messages de journal et les événements de trace avec le fournisseur. Les définitions d’événements agissent comme des filtres sur les niveaux de messages de journal et d’événements de trace définis par le fournisseur. Un fournisseur spécifie les définitions d’événements pour une application lorsqu’une nouvelle version ou un nouveau correctif est publié.
Note
Les définitions d’événements ne sont pas obligatoires. Si un fournisseur ne spécifie pas de définitions d’événements pour une application, les consommateurs peuvent activer ou désactiver le partage d’événements selon les besoins.
Les fournisseurs peuvent définir une définition d’événement comme étant obligatoire ou facultative :
Les définitions d’événements obligatoires sont activées automatiquement lors de l’installation de l’application. Pour collecter les définitions d’événements émises par une application, un consommateur doit créer une table d’événements et la définir comme table d’événements active pour son compte.
Les définitions d’événements facultatives peuvent être activées ou désactivées par le consommateur selon les besoins. Les définitions d’événements facultatives nécessitent une table d’événements active, mais elles ne sont pas nécessaires pour installer ou utiliser l’application.
Prudence
Les définitions d’événements ne sont pas les mêmes que les niveaux de journalisation et de traçage définis par le fournisseur. Les niveaux de journalisation et de traçage déterminent les informations insérées dans la table des événements du consommateur.
Les définitions d’événements sont des filtres qui agissent sur les messages de journal et les événements de trace. Ils déterminent quelles informations sont insérées dans la table des événements du fournisseur lorsque le partage d’événements est activé.
Définitions d’événements prises en charge¶
Le tableau suivant répertorie les définitions d’événements actuellement prises en charge :
Type
Nom
Description
Filtre
All
SNOWFLAKE$ALL
Partage tous les messages de journal et les événements de trace que l’application émet.
*
Errors and warnings
SNOWFLAKE$ERRORS_AND_WARNINGS
Partage les journaux liés aux erreurs, aux avertissements et aux événements fatals.
RECORD_TYPE = ‘LOG’ AND RECORD:severity_text in (‘FATAL’, ‘ERROR’, ‘WARN’)
Traces
SNOWFLAKE$TRACES
Partage des traces détaillées des activités et des parcours des utilisateurs dans l’application.
RECORD_TYPE in (‘SPAN’, ‘SPAN_EVENT’)
Usage logs
SNOWFLAKE$USAGE_LOGS
Partage les journaux de haut niveau liés aux actions des utilisateurs et aux événements d’application.
RECORD_TYPE = LOG AND RECORD:severity_text = ‘INFO’
Debug logs
SNOWFLAKE$DEBUG_LOGS
Partage les journaux techniques utilisés pour dépanner l’application.
RECORD_TYPE = ‘LOG’ AND RECORD:severity_text in (‘DEBUG’, ‘TRACE’)
Note
Si un fournisseur ne configure pas l’application pour utiliser les définitions d’événements, Snowsight affiche uniquement le type All.
Considérations pour les consommateurs lors de l’utilisation de définitions d’événements¶
Les consommateurs peuvent continuer à utiliser la propriété SHARE_EVENTS_WITH_PROVIDER existante, mais il existe des limites :
Si une application utilise uniquement la définition OPTIONAL ALL de l’événement, définir la propriété SHARE_EVENTS_WITH_PROVIDER sur
true
permet le partage d’événements et la définir surfalse
désactive le partage d’événements.Ceci est applicable lorsqu’un fournisseur ajoute explicitement la définition OPTIONAL ALL de l’événement au fichier manifeste ou lorsqu’une application a été migrée à partir de la fonctionnalité de partage d’événements existante.
Si un fournisseur ajoute des définitions d’événements obligatoires et facultatives au fichier manifeste, définir la propriété SHARE_EVENTS_WITH_PROVIDER sur
true
active toutes les définitions d’événements. En revanche, la propriété SHARE_EVENTS_WITH_PROVIDER ne peut être définie que surfalse
si le fournisseur ajoute uniquement des définitions d’événements facultatives.SHARE_EVENTS_WITH_PROVIDER est TRUE uniquement lorsque toutes les définitions d’événements sont activées, sinon c’est FALSE.
Flux de travail pour configurer le traçage des événements pour une application¶
Le flux de travail suivant décrit comment configurer le traçage des événements pour une application :
Points à prendre en considération lors de l’utilisation du traçage d’événements¶
Avant de configurer le traçage des événements pour une application, vous devez prendre en compte les éléments suivants :
Cette fonction nécessite que vous configuriez une table d’événements dans votre compte.
Après avoir activé le partage d’événements, une copie masquée et expurgée des événements de trace et des messages de journaux est automatiquement insérée dans la table des événements du compte fournisseur désigné.
Snowflake ne vous facture pas l’activation du partage d’événements. Cependant, vous êtes responsable du coût d’ingestion des événements de trace et des messages de journal dans la table d’événements, ainsi que des coûts de stockage de la table d’événements.
Après avoir activé le partage d’événements avec un fournisseur, vous ne pouvez pas révoquer l’accès aux événements de trace partagés et aux messages de journal.
Vous ne pouvez pas partager d’événements historiques à l’aide du partage d’événements.
Snowflake envoie les événements partagés à un compte fournisseur désigné dans la même région que votre compte. Cette fonction ne partage pas de données entre différentes régions.
Vous ne pouvez pas modifier les niveaux de journalisation ou de traçage d’une application, car c’est le fournisseur qui les définit. Le fournisseur de l’application définit ces niveaux lors de la publication de l’application.
Snowflake recommande de vérifier les événements de trace et les messages de journal dans la table des événements avant d’activer le partage d’événements.
Snowflake recommande de désactiver la journalisation et le partage d’événements si vous n’avez pas besoin de dépanner l’application.
Configuration d’une table d’événements¶
Pour collecter les messages de journal et les événements de trace émis par l’application, les consommateurs doivent créer une table d’événements pour stocker les informations.
Note
IF le consommateur ne configure pas de table d’événements et ne la définit pas comme une table d’événements active avant d’installer l’application, les données d’événements de trace et de journal sont supprimées.
Si un fournisseur inclut les définitions d’événements requises dans l’application, elles sont activées par défaut lors de l’installation. Cependant, si le consommateur ne dispose pas d’une table d’événements active, les messages de journal et les événements de trace émis par l’application sont ignorés.
Un compte peut avoir plusieurs tables d’événements, mais une seule d’entre elles peut être définie comme table d’événements active dans un compte Snowflake à la fois. Sans table d’événements active, les messages de journal et les événements de trace émis par l’application ne sont pas capturés. Cela est vrai même si les fonctions et procédures d’une application appellent les APIs de journalisation et d’événements de trace.
Pour créer une table d’événements, exécutez la commande CREATEEVENT TABLE, comme indiqué dans l’exemple suivant :
CREATE EVENT TABLE event_db.event_schema.my_event_table;
Notez que cette commande spécifie la base de données et le schéma qui contiennent la table des événements.
Après avoir créé la table d’événements, utilisez la commande ALTER ACCOUNT pour spécifier que la table d’événements est la table active pour le compte :
ALTER ACCOUNT SET EVENT_TABLE=event_db.event_schema.my_event_table;
Activer le partage d’événements pour une application¶
Le Snowflake Native App Framework prend en charge le partage des messages de journal et des événements de trace stockés dans la table des événements du consommateur avec le fournisseur d’applications. Pour partager les journaux et les informations sur les événements avec un fournisseur, le client doit activer le partage d’événements pour une application.
Conditions préalables pour activer le partage d’événements pour une application¶
Les conditions suivantes doivent être remplies pour activer le partage d’événements pour une instance d’application :
Utilisez un rôle avec le privilège global MANAGE EVENT SHARING. Le rôle ACCOUNTADMIN dispose de ce privilège par défaut et peut l’accorder à d’autres rôles.
Configurer une table d’événements dans le compte consommateur.
Activer le partage d’événements à l’aide de Snowsight¶
Note
Si le fournisseur inclut les définitions d’événements requises dans l’application, le partage d’événements et les définitions d’événements requises sont activés lors de l’installation et ne peuvent pas être désactivés ultérieurement.
Pour activer le partage d’événements pour une application :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Data Products » Apps.
Sélectionnez l’application.
Sélectionnez l’icône Security dans la barre d’outils.
Sélectionnez l’onglet Events and logs.
Sous la zone Events and logs sharing, sélectionnez Enable
Si le fournisseur a défini des définitions d’événements pour l’application :
Utilisez le curseur pour activer les définitions d’événements facultatives.
Sélectionnez Review.
Si aucune table d’événements n’est actuellement sélectionnée, sélectionnez la table d’événements dans la liste sous Event table location.
Prudence
Soyez prudent(e) lorsque vous modifiez la table d’événements dans Snowsight. Chaque compte Snowflake utilise une seule table d’événements pour tous les événements générés au sein du compte. La modification de la table d’événements entraîne le stockage au nouvel emplacement de tous les événements générés dans le compte.
Activer le partage d’événements en utilisant SQL¶
Pour activer le partage d’événements pour une application en utilisant SQL :
Utilisez la commande SHOW TELEMETRY EVENT DEFINITIONS pour déterminer les définitions d’événements pour l’application :
SHOW TELEMETRY EVENT DEFINITIONS IN APPLICATION hello_snowflake;
Si le fournisseur n’a pas configuré l’application pour utiliser les définitions d’événements, la colonne
type
afficheALL
. Sinon, cette commande répertorie les définitions d’événements facultatives spécifiées pour l’application.Si l’application contient les définitions d’événements requises, utilisez la commande ALTER APPLICATION pour les activer :
ALTER APPLICATION hello_snowflake SET AUTHORIZE_TELEMETRY_EVENT_SHARING=true
Cette commande active toutes les définitions d’événements requises, mais n’active pas les définitions d’événements facultatives.
Note
Après avoir activé les définitions d’événements requises pour une application, le partage d’événements ne peut pas être désactivé.
Si l’application contient des définitions d’événements d’options, utilisez l’option ALTER APPLICATION pour les activer comme indiqué dans l’exemple suivant :
ALTER APPLICATION hello_snowflake SET SHARED TELEMETRY EVENTS ('SNOWFLAKE$TRACES', 'SNOWFLAKE$DEBUG_LOGS');
Cet exemple active le
SNOWFLAKE$TRACES
etSNOWFLAKE$DEBUG_LOGS
basé en fonction du résultat de la commande SHOW TELEMETRY EVENT DEFINITIONS.Pour vérifier que le traçage et la journalisation des événements sont activés, utilisez la commande DESC APPLICATION :
DESC APPLICATION hello_snowflake;
Les lignes
authorize_telemetry_event_sharing
etshare_events_with_provider
de la sortie indiquent si le partage d’événements est activé.
Activer le partage d’événements à l’aide de SQL (ancienne fonctionnalité)¶
Prudence
La méthode permettant de partager des événements à l’aide de SQL décrite dans cette section sera obsolète dans une future version. Snowflake recommande d’utiliser la méthode décrite dans Activer le partage des journaux et des événements à l’aide de SQL pour activer le partage d’événements à l’aide de SQL.
Pour activer le partage d’événements pour une application, exécutez la commande ALTER APPLICATION pour définir SHARE_EVENTS_WITH_PROVIDER sur TRUE
. Par exemple :
ALTER APPLICATION HelloSnowflake SET SHARE_EVENTS_WITH_PROVIDER = TRUE;
Pour afficher le statut de partage des événements d’une application, utilisez la commande DESC APPLICATION comme indiqué dans l’exemple suivant :
DESC APPLICATION HelloSnowflake;
SHARE_EVENTS_WITH_PROVIDER
indique le statut du partage d’événements pour l’application.
Activer les définitions d’événements lors des mises à niveau¶
Lors des mises à niveau, les définitions d’événements se comportent comme suit :
Modification de la définition de l’événement
Comportement lors de la mise à niveau
Aucune modification à la définition d’un événement
La définition de l’événement conserve le même statut que la version ou le correctif précédent.
Une nouvelle définition d’événement
Non activé automatiquement. Ceci est vrai pour les définitions d’événements obligatoires et facultatives. Le consommateur doit activer manuellement les nouvelles définitions d’événements.
Passage d’obligatoire à facultatif ou de facultatif à obligatoire
La définition de l’événement conserve le même statut que la version ou le correctif précédent.
Définition d’événement supprimée
Le partage d’événements s’arrête après la mise à niveau des messages de journal ou du filtre d’événements de trace dans la version ou le correctif précédent.
Lors de la mise à niveau, les consommateurs sont invités à vérifier les modifications apportées aux définitions d’événements par rapport au correctif ou à la version précédente.
Voir les messages de journal et les événements de trace dans la table d’événements¶
WHen une table d’événements est activée, les consommateurs peuvent interroger la table d’événements pour voir les messages de journal et les événements de trace émis par l’application. Utilisez la commande SELECT pour effectuer une requête sur la table des événements, par exemple :
SELECT * FROM event_db.event_schema.my_event_table;
Cette commande renvoie tous les messages de journal et les événements de trace stockés dans la table des événements.
Voir les niveaux de journal et de trace pour une application¶
Le niveau de journal et de trace d’une application est défini par le fournisseur avant la publication d’une application. Les consommateurs ne peuvent pas modifier les niveaux de journal et de trace d’une application.
Cependant, avant de configurer le traçage des événements ou d’activer le partage d’événements pour une application, Snowflake recommande de vérifier le niveau de journal pour comprendre le type d’informations collectées et partagées avec le fournisseur.
Pour voir le niveau de journal et de trace d’une application, exécutez la commande suivante :
DESC APPLICATION HelloSnowflake;
Cette commande affiche des informations sur l’application HelloSnowflake
, y compris les informations suivantes sur le niveau de journal et de trace défini pour l’application :
log_level : Le niveau de journal défini par le fournisseur dans le fichier manifeste.
trace_level : Le niveau de trace défini par le fournisseur dans le fichier manifeste.
effective_log_level : le niveau de journal activé pour l’application.
effective_trace_level : le niveau de trace activé pour l’application.
Les niveaux de journal et de trace efficaces sont déterminés par les définitions d’événements que le consommateur active pour l’application.
Par exemple, si le fournisseur définit le niveau de journal comme OFF, mais que le consommateur active la définition de l’événement ERROR_AND_WARNING, l’application modifie dynamiquement le niveau de journal en WARN de sorte que les événements ERROR_AND_WARNING puissent être collectés. L’application émet des événements qui sont moins ou tout aussi verbeux que WARN et partage ces événements d’erreur et d’avertissement avec le fournisseur. Les valeurs de log_level seraient OFF et la valeur de effective_log_level serait WARN.
En revanche, si le fournisseur définit le niveau de journal comme TRACE, mais que le consommateur active la définition de l’événement ERROR_AND_WARNING, l’application émet des événements qui sont moins ou aussi verbeux que trace, mais seuls les messages d’erreur et d’avertissement sont partagés avec le fournisseur. La valeur de log_level et effective_log_level serait TRACE.