Définition des niveaux de journalisation, des métriques et du traçage

Vous pouvez définir les niveaux de seuil pour les messages de journal, les événements de journal, les données de trace ou les données de métriques capturées dans un tableau des événements.

Chaque type de données de télémétrie prend en charge son propre ensemble de niveaux spécifiques à son objectif. Vous pouvez définir ces niveaux en utilisant le paramètre que Snowflake pourvoit à chacun. Vous pouvez également définir certains niveaux en utilisant Snowsight, qui représente les paramètres de niveau de manière simplifiée.

Pour chaque type de données de télémétrie, vous pouvez effectuer les opérations suivantes :

  • Définir des niveaux spécifiques à ce type de données.

  • Définir des niveaux à l’échelle du système qui sont en vigueur sauf s’ils sont remplacés.

  • Remplacez les niveaux à l’échelle du système en définissant le niveau pour une session ou sur des objets spécifiques (tels que les procédures et UDFs).

    Les niveaux sont représentés à la fois comme des paramètres de session et des paramètres d’objet.

Note

Vous pouvez utiliser le code du gestionnaire pour remplacer le niveau de journalisation que vous avez défini avec SQL (comme décrit dans cette rubrique) lorsque votre gestionnaire est écrit en Python. Pour plus d’informations, voir Remplacement des niveaux de seuil de journalisation avec Python.

Portée

Pour chaque type de données télémétriques, vous pouvez définir des niveaux afin qu’ils s’appliquent à la portée qui correspond le mieux à vos exigences. Dans de nombreux cas, vous pouvez remplacer les niveaux définis dans une portée plus large en les définissant dans une portée plus restreinte, comme décrit dans Comment Snowflake détermine le niveau en vigueur. Par exemple, vous pouvez souhaiter disposer d’un ensemble de niveaux par défaut dans la portée du compte, puis définir différents niveaux pour les objets d’une base de données particulière.

Vous pouvez définir chacun d’entre eux selon les portées suivantes :

Compte:

Un niveau défini pour le compte est en vigueur partout dans le compte, sauf lorsqu’il est remplacé par un niveau défini au niveau de l’objet ou de la session.

Objet:

Vous pouvez définir les niveaux de télémétrie sur les types d’objets suivants :

  • Base de données ou schéma contenant des procédures et des fonctions

  • Procédure stockée

  • Fonction définie par l’utilisateur (UDF) ou fonction de table définie par l’utilisateur (UDTF)

  • Table Apache Iceberg™ gérée en externe avec actualisation automatique configurée

Par exemple, pour définir le niveau de journalisation des messages du journal provenant des APIs pour un UDF spécifique, utilisez:doc:/sql-reference/sql/alter-function pour définir le paramètre LOG_LEVEL pour cette UDF. Autre exemple, pour définir le niveau de journalisation par défaut pour toutes les fonctions et procédures d’une base de données, utilisez ALTER DATABASE pour définir le paramètre LOG_LEVEL sur cette base de données. Autre exemple, pour définir le niveau des événements de journal pour une table Iceberg spécifique gérée en externe avec une actualisation automatique configurée, utilisez:doc:/sql-reference/sql/alter-iceberg-table pour définir le paramètre LOG_EVENT_LEVEL sur cette table. Utilisez les commandes ALTER <objet> pour définir le paramètre LOG_EVENT_LEVEL pour d’autres objets qui émettent des événements de journal (type d’enregistrementEVENT).

Note

Vous ne pouvez pas définir le niveau que sur les objets Streamlit. Définissez plutôt le niveau sur la base de données ou le schéma contenant l’objet.

Session:

Vous pouvez définir le niveau de télémétrie des appels aux fonctions et aux procédures effectués dans la session en cours.

Niveaux

Vous pouvez définir les niveaux suivants pour chaque type de données télémétriques :

Messages de journal:

Lorsque vous définissez un niveau, seules les messages de journal des APIs de journalisation à ce niveau et aux niveaux plus graves sont capturés dans un tableau des événements et visibles dans Snowsight. Par exemple, définir le paramètre LOG_LEVEL sur WARN signifie que les messages de journal des niveaux WARN, ERROR et FATAL sont enregistrés dans le tableau des événements.

Définissez le paramètre LOG_LEVEL.

Événements du journal:

Lorsque vous définissez un niveau, seules les événements de journal (type d’événement record type EVENT) à ce niveau et aux niveaux plus graves sont capturés dans un tableau des événements. Les exemples incluent les événements de Snowpipe, les tâches, les tables dynamiques, les pools de calcul Snowpark Container Services, les tables Iceberg et l’activité des balises de gouvernance des données.

Définissez le paramètre LOG_EVENT_LEVEL.

Métriques:

Vous pouvez actuellement capturer toutes les données de métriques ou aucune.

Définissez le paramètre METRIC_LEVEL.

Traçage:

Vous pouvez spécifier les caractéristiques suivantes :

  • Portée des données des événements tracés stockées dans le tableau des événements

    Définissez le paramètre TRACE_LEVEL.

  • S’il faut capturer le texte SQL dans une instruction SQL tracée

    Cela est déterminé par le paramètre SQL_TRACE_QUERY_TEXT. Pour plus d’informations, voir Traçage des instructions SQL.

Privilèges nécessaires

Pour définir des niveaux sur un objet, vous devez utiliser un rôle qui bénéficie ou hérite des privilèges décrits dans cette section.

Par exemple, le code de l’exemple suivant accorde les privilèges nécessaires à une personne utilisant le rôle central_log_admin permettant de définir le niveau de journalisation du compte :

GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;

Pour plus d’informations sur ces privilèges, voir Privilèges de contrôle d’accès.

Niveau à modifier

Paramètre à définir

Privilèges nécessaires

Niveau de journalisation (messages de journal)

LOG_LEVEL

Compte

  • MODIFY LOG LEVEL sur le compte

Objet

  • MODIFY LOG LEVEL sur le compte

  • MODIFY sur l’objet pour lequel vous voulez définir le niveau

  • USAGE sur la base de données ou le schéma contenant la procédure ou l’UDF pour laquelle vous souhaitez définir le niveau

Session

  • MODIFY SESSION LOG LEVEL

Niveau d’événement du journal

LOG_EVENT_LEVEL

Compte

  • MODIFY LOG EVENT LEVEL sur le compte

Objet

  • MODIFY LOG EVENT LEVEL sur le compte

  • MODIFY sur l’objet pour lequel vous voulez définir le niveau

  • USAGE sur la base de données ou le schéma contenant l’objet pour lequel vous souhaitez définir le niveau.

Session

  • MODIFY SESSION LOG EVENT LEVEL

Niveau de métrique

METRIC_LEVEL

Compte

  • MODIFY METRIC LEVEL sur le compte

Objet

  • MODIFY METRIC LEVEL sur le compte

  • MODIFY sur l’objet pour lequel vous voulez définir le niveau

  • USAGE sur la base de données ou le schéma contenant la procédure ou l’UDF pour laquelle vous souhaitez définir le niveau

Session

  • MODIFY SESSION METRIC LEVEL

Niveau de trace

TRACE_LEVEL

Compte

  • MODIFY TRACE LEVEL sur le compte

Objet

  • MODIFY TRACE LEVEL sur le compte

  • MODIFY sur l’objet pour lequel vous voulez définir le niveau

  • USAGE sur la base de données ou le schéma contenant la procédure ou l’UDF pour laquelle vous souhaitez définir le niveau

Session

  • MODIFY SESSION TRACE LEVEL

Texte SQL dans le SQL

SQL_TRACE_QUERY_TEXT

Compte

  • SQL_TRACE_QUERY_TEXT sur le compte

Définition des niveaux de télémétrie

Vous pouvez définir les niveaux de télémétrie à l’aide de SQL ou, dans certains cas, de l’Snowsight. Dans de nombreux cas, vous pouvez remplacer les niveaux définis dans une portée plus large en les définissant dans une portée plus restreinte, comme décrit dans Comment Snowflake détermine le niveau en vigueur.

Avant de définir les niveaux, vérifiez que vous avez accès à un rôle avec les privilèges nécessaires.

Vous pouvez utiliser Snowsight pour définir les niveaux de télémétrie au niveau du compte.

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez Monitoring » Traces & logs.

  3. Sur la page Traces & Logs , sélectionnez Set Event Level.

  4. Pour Set logging & tracing for, sélectionnez la portée de votre choix parmi l’une des portées suivantes :

    • Account

    • La base de données et, éventuellement, le schéma

  5. Sélectionnez les niveaux de données télémétriques que vous souhaitez ajuster.

    All Events

    On pour activer la collecte pour tous les types de données de télémétrie ; Off pour désactiver la collecte de tous les types de données.

    Traces

    On pour définir la collecte de données de trace sur ALWAYS; Off pour définir la collecte de données de trace sur OFF. Pour plus d’informations sur les niveaux, voir TRACE_LEVEL.

    Logs

    On pour définir la collecte des données du journal sur INFO. Pour plus d’informations sur les niveaux, voir LOG_LEVEL.

    Metrics

    On pour définir la collecte de données de trace sur ALL; Off pour définir la collecte de données de trace sur NONE. Pour plus d’informations sur les niveaux, voir METRIC_LEVEL.

Comment Snowflake détermine le niveau en vigueur

Vous pouvez remplacer les paramètres de niveau de télémétrie (à la fois pour les objets et les sessions) en utilisant une hiérarchie de niveaux.

Par exemple, vous pouvez définir un niveau sur une valeur pour le compte, puis le remplacer en définissant le niveau pour un objet qui est plus bas dans la hiérarchie.

La hiérarchie des paramètres au niveau de la session et de l’objet est décrite ci-après.

  • Pour les paramètres de session, la hiérarchie est Compte » Utilisateur » Session.

    Cela signifie que vous pouvez définir le paramètre pour un compte, remplacer le paramètre au niveau du compte pour un utilisateur et remplacer le paramètre au niveau de l’utilisateur pour la session en cours.

  • Pour les paramètres de l’objet, la hiérarchie est Compte » Base de données » Schéma » Objet.

    Cela signifie que vous pouvez définir le paramètre pour un compte, remplacer le paramètre au niveau du compte pour une base de données ou un schéma, et remplacer le paramètre au niveau de la base de données ou du schéma pour des procédures stockées spécifiques et des UDFs dans cette base de données ou ce schéma.

Par exemple, le LOG_LEVEL pour les messages de journal d’une fonction remplace le LOG_LEVEL du compte qui contient la fonction. Si le LOG_LEVEL du compte est FATAL et le LOG_LEVEL de l’UDF Java du compte est INFO, le LOG_LEVEL effectif est INFO (le niveau de la fonction, pas du compte) :

ALTER ACCOUNT SET LOG_LEVEL = FATAL;

ALTER FUNCTION MyJavaUDF SET LOG_LEVEL = INFO;

-- The INFO log level is used because the FUNCTION MYJAVAUDF
-- is lower than the ACCOUNT in the hierarchy.

Dans les cas où le niveau est défini à la fois dans les hiérarchies de paramètres de session et d’objet, le niveau le plus verbeux est utilisé.

  • Pour le LOG_LEVEL, (messages de journal des APIs de journalisation) le tableau suivant présente des exemples de la manière dont les paramètres définis pour la session et l’objet affectent le niveau de journalisation utilisé.

    Valeur de la session

    Valeur de l’objet, du schéma, de la base de données ou du compte

    LOG_LEVEL utilisé

    (non défini)

    WARN

    WARN

    DEBUG

    (non défini)

    DEBUG

    WARN

    ERROR

    WARN

    INFO

    DEBUG

    DEBUG

    (non défini)

    (non défini)

    OFF

    Les mêmes règles de précédence s’appliquent àLOG_EVENT_LEVEL pour les événements du journal (type d’enregistrementEVENT).

  • Pour le niveau métrique — ALL remplace NONE.

  • Pour le niveau de trace — ALWAYS remplace ON_EVENT et OFF ; ON_EVENT remplace OFF.