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

Vous pouvez définir les niveaux de seuil pour les données de journal, de trace ou de métriques capturées dans une table d’événements.

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

  • Définissez des niveaux spécifiques à chaque type de données de télémétrie.

  • Définissez des niveaux à l’échelle du système pour chacun d’eux 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.

Présentation des niveaux de journalisation, de métriques et de traçage

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.

Vous pouvez définir chacun d’entre eux de la manière suivante :

Connexion:

Lorsque vous définissez un niveau, seules les données à ce niveau et aux niveaux plus graves sont capturées dans une table d’événements et visibles dans Snowsight. Par exemple, si le paramètre LOG_LEVEL est réglé sur WARN, les messages des niveaux WARN, ERROR et FATAL sont saisis dans la table d’événements.

Les niveaux sont déterminés par le paramètre LOG_LEVEL.

Métriques:

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

Les niveaux sont déterminés par le paramètre METRIC_LEVEL.

Traçage:

Vous pouvez spécifier l’étendue des données des événements de trace stockées dans la table des événements.

Les niveaux sont déterminés par le paramètre TRACE_LEVEL.

Définition du niveau du compte

Pour chaque type de données de télémétrie, vous pouvez définir le niveau pour le compte. Vous pouvez remplacer ce niveau au niveau de l’objet et de la session comme décrit dans Comprendre comment Snowflake détermine le niveau en vigueur.

Vérifiez que vous disposez des privilèges nécessaires

Pour définir des niveaux pour le compte, vous devez utiliser un rôle qui bénéficie ou hérite des privilèges décrits ci-dessous.

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

Niveau à modifier

Paramètre à définir

Privilèges nécessaires

Niveau de journalisation

LOG_LEVEL

MODIFY LOG LEVEL sur le compte

Niveau de métrique

METRIC_LEVEL

MODIFY METRIC LEVEL sur le compte

Niveau de trace

TRACE_LEVEL

MODIFY TRACE LEVEL sur le compte

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;
Copy

Réglage du niveau du compte dans Snowsight

Note

La prise en charge de Snowsight de la journalisation et du traçage est une fonctionnalité en avant-première disponible pour tous les comptes.

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

  1. Vérifiez que vous avez accès à un rôle avec des privilèges nécessaires pour définir les niveaux.

  2. Connectez-vous à Snowsight.

  3. Dans le menu de navigation, sélectionnez Monitoring » Traces and Logs.

  4. Dans la page Traces & Logs, sélectionnez Set Event Level.

  5. Pour Set logging & tracing for, sélectionnez Account.

  6. Sélectionnez les niveaux de données de télémétrie 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.

Réglage du niveau sur le compte avec SQL

Vous pouvez utiliser SQL pour définir les niveaux de télémétrie pour le compte.

Pour définir un niveau de télémétrie sur le compte, procédez comme suit :

  1. Vérifiez que vous avez accès à un rôle avec des privilèges nécessaires pour définir les niveaux.

  2. Utilisez la commande ALTER ACCOUNT pour définir le paramètre approprié, basé sur les données de télémétrie que vous souhaitez collecter.

    Pour la liste des niveaux que vous pouvez utiliser, voir Présentation des niveaux de journalisation, de métriques et de traçage.

    L’exemple suivant définit le niveau de journalisation sur ERROR pour le compte.

    -- Set the log level on the account
    ALTER ACCOUNT SET LOG_LEVEL = ERROR;
    
    Copy

Définition du niveau d’un objet

Pour chaque type de données de télémétrie, vous pouvez définir le niveau sur les objets suivants :

  • Une procédure stockée

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

  • Une base de données ou un schéma contenant des procédures et des fonctions

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.

Vérifiez que vous disposez des privilèges nécessaires

Pour définir des niveaux sur un objet, vous devez utiliser un rôle qui reçoit ou hérite des privilèges décrits ci-dessous.

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

LOG_LEVEL

  • 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

Niveau de métrique

METRIC_LEVEL

  • 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

Niveau de trace

TRACE_LEVEL

  • 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

Le code de l’exemple suivant accorde les privilèges nécessaires à une personne utilisant le rôle central_log_admin pour définir le niveau de journalisation pour la base de données db1.

GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
GRANT MODIFY ON DATABASE db1 TO ROLE central_log_admin;
Copy

Définition du niveau sur une base de données ou un schéma dans Snowsight

Note

La prise en charge de Snowsight de la journalisation et du traçage est une fonctionnalité en avant-première disponible pour tous les comptes.

Vous pouvez utiliser Snowsight pour définir les niveaux de télémétrie. Avant de commencer, vérifiez que vous avez accès à un rôle avec des privilèges nécessaire pour définir les niveaux.

  1. Vérifiez que vous avez accès à un rôle avec des privilèges nécessaires pour définir les niveaux.

  2. Connectez-vous à Snowsight.

  3. Dans le menu de navigation, sélectionnez Monitoring » Traces and Logs.

  4. Dans la page Traces & Logs, sélectionnez Set Event Level.

  5. Pour Set logging & tracing for, sélectionnez la base de données et, éventuellement, le schéma pour lesquels vous définissez les niveaux.

  6. Sélectionnez les niveaux de données de télémétrie 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.

Définition du niveau sur une base de données, un schéma ou un autre objet avec SQL

Vous pouvez utiliser SQL pour définir des niveaux de journalisation, de mesures et de traçage.

Pour définir le niveau de télémétrie d’un objet, procédez comme suit :

  1. Vérifiez que vous avez accès à un rôle avec des privilèges nécessaires pour définir les niveaux.

  2. Utilisez la commande ALTER <objet> pour définir le paramètre LOG_LEVEL sur l’objet.

    Pour la liste des niveaux que vous pouvez utiliser, voir Présentation des niveaux de journalisation, de métriques et de traçage.

    Par exemple, pour définir le niveau de journalisation pour une UDF spécifique, utilisez 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.

    L’exemple suivant définit le niveau de journalisation sur ERROR pour toutes les fonctions et procédures de la base de données db. L’exemple remplace ce niveau par WARN pour l’UDF f1(int).

    USE ROLE central_log_admin;
    
    -- Set the log levels on a database and UDF.
    ALTER DATABASE db1 SET LOG_LEVEL = ERROR;
    ALTER FUNCTION f1(int) SET LOG_LEVEL = WARN;
    
    Copy

    Pour plus de détails sur la façon dont Snowflake détermine le niveau de journalisation effectif lorsque le LOG LEVEL est défini sur différents objets, voir Comprendre comment Snowflake détermine le niveau en vigueur.

Définition du niveau pour la session en cours

Pour définir le niveau des appels aux fonctions et procédures effectués dans la session en cours :

  1. Vérifiez que vous avez le privilège de définir le niveau de la session.

    Vous devez utiliser un rôle auquel ont été accordés les privilèges suivants, en fonction des niveaux que vous définissez :

    Niveau à modifier

    Paramètre à définir

    Privilèges nécessaires

    Niveau de journalisation

    LOG_LEVEL

    MODIFY SESSION LOG LEVEL

    Niveau de métrique

    METRIC_LEVEL

    MODIFY SESSION METRIC LEVEL

    Niveau de trace

    TRACE_LEVEL

    MODIFY SESSION TRACE LEVEL

    Par exemple, pour accorder au rôle developer_debugging le privilège de définir les niveaux de journalisation pour la session en cours, exécutez l’instruction suivante :

    GRANT MODIFY SESSION LOG LEVEL ON ACCOUNT TO ROLE developer_debugging;
    
    Copy
  2. Utilisez la commande ALTER SESSION pour définir le paramètre LOG_LEVEL de la session en cours.

    Par exemple :

    USE ROLE developer_debugging;
    
    -- Set the logging level to DEBUG for the current session.
    ALTER SESSION SET LOG_LEVEL = DEBUG;
    
    Copy

Si le paramètre de niveau est défini sur différents niveaux pour la session en cours et pour les fonctions et procédures appelées dans cette session, Snowflake détermine le niveau effectif à utiliser. Voir Comprendre comment Snowflake détermine le niveau en vigueur.

Comprendre 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 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.
Copy

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 niveau 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

    Niveau de journalisation utilisé

    (non défini)

    WARN

    WARN

    DEBUG

    (non défini)

    DEBUG

    WARN

    ERROR

    WARN

    INFO

    DEBUG

    DEBUG

    (non défini)

    (non défini)

    OFF

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

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