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

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

Cada tipo de dados de telemetria oferece suporte ao próprio conjunto de níveis específicos de 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:

  • Definir níveis específicos para o tipo de dados.

  • Definir níveis em todo o sistema 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)

  • Tabela Apache Iceberg™ gerenciada externamente com a atualização automatizada configurada

Por exemplo, para definir o nível de log para mensagens de log das APIs 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. Como outro exemplo, para definir o nível de evento de log de uma tabela Iceberg gerenciada externamente específica com atualização automatizada configurada, use ALTER ICEBERG TABLE para definir o parâmetro LOG_EVENT_LEVEL nessa tabela. Use os comandos ALTER <objeto> para definir o parâmetro LOG_EVENT_LEVEL para outros objetos que emitem eventos de log (tipo de registro EVENT).

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:

Mensagens de log:

Quando você define um nível, apenas as mensagens de log das APIs de registro naquele nível e em níveis mais graves são capturados em uma tabela de eventos e ficam visíveis no Snowsight. Por exemplo, definir o parâmetro LOG_LEVEL como WARN significa que as mensagens de log nos níveis WARN, ERROR e FATAL são capturadas na tabela de eventos.

Ajuste o parâmetro LOG_LEVEL.

Eventos de log:

Quando você define um nível, apenas os eventos de log (tipo de registro EVENT) naquele nível e em níveis mais graves são capturados em uma tabela de eventos. Alguns exemplos são eventos do Snowpipe, tarefas, tabelas dinâmicas, pools de computação do Snowpark Container Services, tabelas Iceberg e atividade de tags de governança de dados.

Ajuste o parâmetro LOG_EVENT_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;

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 log (mensagens de log)

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 evento de log

LOG_EVENT_LEVEL

Conta

  • MODIFY LOGEVENTLEVEL na conta

Objeto

  • MODIFY LOGEVENTLEVEL na conta

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

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

Sessão

  • MODIFY SESSION LOG EVENT 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 na Snowsight.

  2. No menu de navegação, selecione Monitoring » Traces & 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 para mensagens de log 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.

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 LOG_LEVEL (mensagens de log das APIs de registro), 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

    LOG_LEVEL usado

    (não definido)

    WARN

    WARN

    DEBUG

    (não definido)

    DEBUG

    WARN

    ERROR

    WARN

    INFO

    DEBUG

    DEBUG

    (não definido)

    (não definido)

    OFF

    As mesmas regras de precedência se aplicam a LOG_EVENT_LEVEL para eventos de log (tipo de registro EVENT).

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

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