Definição de níveis para registro, métricas e rastreamento

É possível definir os níveis de limite para dados de telemetria de log, rastreamento ou métricas capturados em uma tabela de eventos.

Cada tipo de dados de telemetria oferece suporte ao seu próprio conjunto de níveis específicos para sua finalidade. É possível definir esses níveis usando o parâmetro que o Snowflake fornece para cada um. Também é possível definir alguns níveis usando Snowsight, que representa os parâmetros de nível de forma simplificada.

Para cada tipo de dados de telemetria, você pode fazer o seguinte:

  • Defina níveis específicos para cada tipo de dados de telemetria.

  • Defina níveis em todo o sistema para cada tipo, que estarão em vigor a menos que sejam substituídos.

  • Substitua níveis de todo o sistema configurando o nível para uma sessão ou em objetos específicos (como procedimentos e UDFs).

    Os níveis são representados como parâmetros de sessão e parâmetros de objeto.

Nota

Você pode usar o código do manipulador para substituir o nível de log definido com SQL (conforme descrito neste tópico) quando seu manipulador for escrito em Python. Para obter mais informações, consulte Substituição dos níveis de limite de log com Python.

Escopo

Para cada tipo de dados de telemetria, é possível definir níveis para que eles entrem em vigor no escopo que melhor atenda às suas exigências. Em muitos casos, você pode substituir níveis definidos em um escopo maior, configurando-os em um escopo menor, conforme descrito em Como o Snowflake determina o nível de efeito. Por exemplo, talvez você queira ter um conjunto de níveis padrão no escopo da conta e, em seguida, definir níveis diferentes para objetos em um determinado banco de dados.

É possível definir cada um deles nos seguintes escopos:

Conta:

Um nível definido para a conta está em vigor em todos os lugares da conta, exceto quando substituído ao ser definido no nível do objeto ou da sessão.

Objeto:

É possível definir os níveis de telemetria nos seguintes tipos de objetos:

  • Banco de dados ou esquema que contém procedimentos e funções

  • Procedimento armazenado

  • Função definida pelo usuário (UDF) ou uma função de tabela definida pelo usuário (UDTF)

Por exemplo, para definir o nível de registro para uma UDF específica, use ALTER FUNCTION para definir o parâmetro LOG_LEVEL para essa UDF. Como outro exemplo, para definir o nível de registro padrão para todas as funções e procedimentos em um banco de dados, use ALTER DATABASE para definir o parâmetro LOG_LEVEL nesse banco de dados.

Nota

Não é possível definir o nível em objetos Streamlit. Em vez disso, defina o nível no banco de dados ou esquema que contém o objeto.

Sessão:

Você pode definir o nível de telemetria para chamadas a funções e procedimentos feitas na sessão atual.

Níveis

Você pode definir os seguintes níveis para cada tipo de dados de telemetria:

Registro:

Ao definir um nível, apenas os dados naquele nível e níveis mais severos são capturados em uma tabela de eventos e estão visíveis em Snowsight. Por exemplo, definir o parâmetro LOG_LEVEL como WARN significa que as mensagens nos níveis WARN, ERROR e FATAL são capturadas na tabela de eventos.

Ajuste o parâmetro LOG_LEVEL.

Métricas:

Atualmente, é possível ter todos os dados de métricas capturados ou nenhum.

Ajuste o parâmetro METRIC_LEVEL.

Rastreamento:

É possível especificar as seguintes características:

Privilégios necessários

Para definir níveis em um objeto, é necessário usar uma função que receba ou herde os privilégios descritos nesta seção.

Por exemplo, o código no exemplo a seguir concede privilégios necessários para alguém que usa a função central_log_admin para definir o nível de log para a conta:

GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
Copy

Para mais informações sobre privilégios, consulte Privilégios de controle de acesso.

Nível a ser modificado

Parâmetro a ser definido

Privilégios necessários

Nível de registro

LOG_LEVEL

Conta

  • MODIFY LOG LEVEL na conta

Objeto

  • MODIFY LOG LEVEL na conta

  • MODIFY no objeto para o qual deseja definir o nível

  • USAGE no banco de dados ou esquema com o procedimento ou UDF para o qual deseja definir o nível

Sessão

  • MODIFY SESSION LOG LEVEL

Nível de métrica

METRIC_LEVEL

Conta

  • MODIFY METRIC LEVEL na conta

Objeto

  • MODIFY METRIC LEVEL na conta

  • MODIFY no objeto para o qual deseja definir o nível

  • USAGE no banco de dados ou esquema com o procedimento ou UDF para o qual deseja definir o nível

Sessão

  • MODIFY SESSION METRIC LEVEL

Nível de rastreamento

TRACE_LEVEL

Conta

  • MODIFY TRACE LEVEL na conta

Objeto

  • MODIFY TRACE LEVEL na conta

  • MODIFY no objeto para o qual deseja definir o nível

  • USAGE no banco de dados ou esquema com o procedimento ou UDF para o qual deseja definir o nível

Sessão

  • MODIFY SESSION TRACE LEVEL

Texto SQL em rastreamento SQL

SQL_TRACE_QUERY_TEXT

Conta

  • SQL_TRACE_QUERY_TEXT na conta

Definição dos níveis de telemetria

Você pode definir níveis de telemetria usando SQL ou, em alguns casos, Snowsight. Em muitos casos, você pode substituir níveis definidos em um escopo maior, configurando-os em um escopo menor, conforme descrito em Como o Snowflake determina o nível de efeito.

Antes de definir níveis, verifique se você tem acesso a uma função com os privilégios necessários.

É possível usar Snowsight para definir níveis de telemetria no nível da conta.

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Monitoring » Traces and Logs.

  3. Na página Traces & Logs, selecione Set Event Level.

  4. Para Set logging & tracing for, selecione o escopo desejado entre os seguintes:

    • Account

    • O banco de dados e, opcionalmente, o esquema

  5. Selecione os níveis para os dados de telemetria que deseja ajustar.

    All Events

    On para ativar a coleta de todos os tipos de dados de telemetria; Off para desativar a coleta de todos os tipos de dados.

    Traces

    On para definir a coleta de dados de rastreamento para ALWAYS; Off para definir a coleta de dados de rastreamento para OFF. Para obter informações sobre níveis, consulte TRACE_LEVEL.

    Logs

    On para definir a coleta de dados de log para INFO. Para obter informações sobre níveis, consulte LOG_LEVEL.

    Metrics

    On para definir a coleta de dados de rastreamento para ALL; Off para definir a coleta de dados de rastreamento para NONE. Para obter informações sobre níveis, consulte METRIC_LEVEL.

Como o Snowflake determina o nível de efeito

É possível substituir os parâmetros relacionados ao nível de telemetria (para objetos e sessões) usando uma hierarquia de níveis.

Por exemplo, você pode definir um nível para um valor para a conta e, em seguida, substituí-lo configurando o nível para um objeto, que está mais abaixo na hierarquia.

A seguir, descrevemos a hierarquia dos parâmetros de nível de sessão e objeto.

  • Para parâmetros de sessão, a hierarquia é Conta » Usuário » Sessão.

    Isso significa que você pode definir o parâmetro para uma conta, substituir o parâmetro no nível da conta para um usuário e substituir o parâmetro no nível do usuário para a sessão atual.

  • Para parâmetros de objeto, a hierarquia é Conta » Banco de dados » Esquema » Objeto.

    Isso significa que você pode definir o parâmetro para uma conta, substituir o parâmetro em nível de conta para um banco de dados ou esquema e substituir o parâmetro em nível de banco de dados ou esquema para procedimentos armazenados específicos e UDFs nesse banco de dados ou esquema.

Por exemplo, o LOG_LEVEL de uma função substitui o LOG_LEVEL da conta que contém a função. Se o LOG_LEVEL da conta for FATAL e o LOG_LEVEL da UDF de Java da conta for INFO, o LOG_LEVEL efetivo será INFO (o nível da função, não da conta):

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

Nos casos em que o nível é definido nas hierarquias de parâmetro de sessão e de objeto, o nível mais detalhado é usado.

  • Para o nível de log, a tabela a seguir lista exemplos de como os parâmetros definidos na sessão e no objeto afetam o nível de log usado.

    Valor da sessão

    Valor do objeto, esquema, banco de dados ou conta

    Nível de registro usado

    (não definido)

    WARN

    WARN

    DEBUG

    (não definido)

    DEBUG

    WARN

    ERROR

    WARN

    INFO

    DEBUG

    DEBUG

    (não definido)

    (não definido)

    OFF

  • Para nível de métrica – ALL substitui NONE.

  • Para nível de rastreamento – ALWAYS substitui ON_EVENT e OFF; ON_EVENT substitui OFF.