Configurer les définitions d’événements pour une application¶
Cette rubrique décrit comment définir des définitions d’événements dans le fichier manifeste d’une application. Les définitions d’événements définissent les messages de journal et les événements de trace partagés avec un fournisseur.
À 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 d’application ou un nouveau correctif est publié.
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é.
Les définitions d’événements sont facultatives. Si un fournisseur ne spécifie pas de définitions d’événements pour une application, les consommateurs peuvent uniquement activer ou désactiver le partage d’événements pour tous les événements lorsque le fournisseur active le traçage des événements.
Prudence
Les définitions d’événements diffèrent des 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. Si ni les niveaux de journalisation ni de traçage ne sont définis, l’application n’émet aucun événement.
Les niveaux de journalisation et de trace d’une application peuvent changer en fonction des définitions d’événements activées par le consommateur. Snowflake utilise les niveaux de journalisation et de trace les plus détaillés autorisés par les définitions d’événements que le consommateur a activées.
Définitions d’événements obligatoires et facultatifs¶
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.
Après avoir installé une application avec les définitions d’événements requises, les consommateurs ne peuvent pas désactiver le partage d’événements ou les définitions d’événements requises. Lorsqu’une application est mise à niveau, les fournisseurs peuvent utiliser les fonctions système ou le Python Permission SDK pour vérifier si le consommateur a activé toutes les définitions d’événements requises.
Les définitions d’événements facultatives peuvent être activées ou désactivées par le consommateur selon les besoins.
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. |
|
Traces |
SNOWFLAKE$TRACES |
Partage des traces détaillées des activités et des parcours des utilisateurs dans l’application. |
|
Usage logs |
SNOWFLAKE$USAGE_LOGS |
Partage les journaux de haut niveau liés aux actions des utilisateurs et aux événements d’application. |
|
Debug logs |
SNOWFLAKE$DEBUG_LOGS |
Partage les journaux techniques utilisés pour dépanner l’application. |
|
Metrics |
SNOWFLAKE$METRICS |
Permettez aux consommateurs de partager des données avec les fournisseurs. |
|
Note
Snowsight affiche uniquement tous les événements de type All au consommateur si le fournisseur n’a pas configuré l’application pour utiliser les définitions d’événements.
Limitations des définitions d’événements dans les applications avec conteneurs¶
Snowflake Native Apps with Snowpark Container Services ne prend actuellement en charge que la définition de l’événement ALL
. La prise en charge de définitions d’événements supplémentaires sera ajoutée dans une future version.
Définir les niveaux de journalisation et de trace pour une application¶
Pour permettre à une application d’utiliser le traçage des événements, un fournisseur doit configurer les niveaux de journalisation et de trace dans le fichier manifeste.
Pour définir les niveaux de journalisation et de trace d’une application, ajoutez un bloc configuration
dans le fichier manifest.yml
comme indiqué dans l’exemple suivant :
configuration:
...
log_level: INFO
trace_level: ALWAYS
metric_level: ALL
...
Cet exemple définit les niveaux de journalisation et de trace pour l’application comme suit :
La propriété
log_level
est définie surINFO
.La propriété
trace_level
est définie surALWAYS
.La propriété
metric_level
est définie surALL
.
Voir LOG_LEVEL, TRACE_LEVEL et METRIC_LEVEL pour obtenir des informations sur les valeurs valides pour ces paramètres.
Prudence
Une fois que vous avez publié une application, les niveaux de journalisation et de trace ne peuvent pas être modifiés. Si les niveaux de journalisation et de trace ne sont pas définis dans le fichier manifeste, l’application n’émet aucune information.
Lorsque les niveaux de journalisation et de trace sont définis pour une application, les consommateurs doivent configurer une table d’événements dans leur compte pour voir les messages de journal et les événements de trace émis par l’application.
Pour permettre au fournisseur de voir les messages de journal et de suivre les événements générés par une application, les consommateurs doivent activer le partage d’événements. Voir Activer le partage d’événements pour une application pour plus d’informations.
Ajouter une définition d’événement au fichier manifeste¶
Pour spécifier une définition d’événement, un fournisseur ajoute une entrée au bloc configuration.telemetry_event_definitions
du fichier manifeste comme indiqué dans l’exemple suivant :
configuration:
telemetry_event_definitions:
- type: ERRORS_AND_WARNINGS
sharing: MANDATORY
- type: DEBUG_LOGS
sharing: OPTIONAL
Cet exemple spécifie les définitions d’événements suivantes :
Une définition d’événement obligatoire avec le type
ERRORS_AND_WARNINGS
.Une définition d’événement facultative avec le type
DEBUG_LOGS
.
Voir Définitions d’événements prises en charge pour plus d’informations.
Une fois qu’un consommateur installe une application, les définitions d’événements apparaissent dans l’onglet Events and logs sur la page Security de l’application. Voir Activer la journalisation et le partage d’événements pour une application pour plus d’informations.
Définir les niveaux de journalisation, de trace et de métrique pour des objets spécifiques¶
Les fournisseurs peuvent affiner les niveaux de journalisation, de trace et de métrique pour des objets spécifiques au sein d’une application. Les fournisseurs ont ainsi plus de contrôle sur les données de télémétrie émises par l’application.
Les fournisseurs peuvent définir les niveaux de journalisation, de trace et de métrique pour les objets suivants au sein d’une application :
Schémas
Schémas versionnés
Procédures stockées
Fonctions définies par l’utilisateur
La table suivante répertorie les commandes SQL utilisées pour définir les niveaux de journalisation, de trace et d’événement pour ces objets :
Objet |
Commande |
---|---|
Schémas |
|
Schéma versionné |
|
Procédures stockées |
|
Fonctions définies par l’utilisateur |
Pour les schémas, les procédures stockées et les fonctions définies par l’utilisateur, les fournisseurs peuvent utiliser la clause SET
des commandes ALTER pour définir les propriétés suivantes :
LOG_LEVEL
TRACE_LEVEL
METRIC_LEVEL
Pour les schémas versionnés, les fournisseurs peuvent définir ces propriétés à l’aide de CREATE OR ALTER VERSIONED SCHEMA dans le script d’installation.
Ordre de priorité pour les niveaux de journalisation, de trace et de métrique¶
Dans une application, les niveaux de journalisation, de trace et de métrique peuvent être configurés de différentes manières pour les composants de l’application. Pour déterminer les événements qui sont émis, le Snowflake Native App Framework utilise l’ordre de priorité suivant :
Procédures stockées et fonctions définies par l’utilisateur
Si un remplacement est défini pour la procédure stockée ou la fonction définie par l’utilisateur spécifique, il est prioritaire.
Schémas et schémas de version
Si aucun remplacement n’est défini pour les procédures stockées ou les fonctions définies par l’utilisateur, les remplacements pour les schémas et les schémas versionnés sont prioritaires.
Paramètres au niveau de l’application
Si aucun remplacement au niveau de l’objet n’est trouvé, la configuration de télémétrie au niveau de l’application, généralement définie dans le fichier manifest, est utilisée.