Definição de níveis para registro, métricas e rastreamento¶
É possível definir os níveis de limite para dados de log, rastreamento ou métricas capturados em uma tabela de evento.
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.
Níveis de registro, métricas e rastreamento¶
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.
É possível definir cada um deles das seguintes maneiras:
No nível da conta.
No nível do banco de dados, esquema ou outro objeto com SQL.
No nível do banco de dados ou esquema usando Snowsight.
No nível da sessão.
- Registro:
Ao definir um nível, apenas os dados naquele nível e níveis mais severos são capturados em uma tabela de evento e 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.
Os níveis são determinados pelo parâmetro LOG_LEVEL.
- Métricas:
Atualmente, é possível ter todos os dados de métricas capturados ou nenhum.
Os níveis são determinados pelo parâmetro METRIC_LEVEL.
- Rastreamento:
É possível especificar o escopo dos dados de evento de rastreamento armazenados na tabela de evento.
Os níveis são determinados pelo parâmetro TRACE_LEVEL.
Definição do nível da conta¶
Para cada tipo de dados de telemetria, é possível definir o nível para a conta. É possível substituir esse nível no nível do objeto e da sessão, conforme descrito em Como o Snowflake determina o nível de efeito.
Verifique se você tem os privilégios necessários¶
Para definir níveis para a conta, é necessário usar uma função que receba ou herde os privilégios descritos abaixo.
Para obter mais informações sobre os 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 |
MODIFY LOG LEVEL na conta |
|
Nível de métrica |
MODIFY METRIC LEVEL na conta |
|
Nível de rastreamento |
MODIFY TRACE LEVEL na conta |
O código no exemplo a seguir concede os privilégios necessários para alguém que usa a função central_log_admin
para definir o nível de log da conta.
GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
Configuração do nível na conta em Snowsight¶
Nota
O suporte do Snowsight para registro em log e rastreamento é um recurso em versão preliminar para todas as contas.
É possível usar Snowsight para definir níveis de telemetria no nível da conta.
Verifique se você tem acesso a uma função com os privilégios necessários para definir níveis.
Faça login no Snowsight.
No menu de navegação, selecione Monitoring » Traces and Logs.
Na página Traces & Logs, selecione o Set Event Level.
Para Set logging & tracing for, selecione Account.
Selecione os níveis de 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 paraOFF
. Consulte TRACE_LEVEL para obter informações sobre os níveis.Logs
On para definir a coleta de dados de log para
INFO
. Consulte LOG_LEVEL para obter informações sobre os níveis.Metrics
On para definir a coleta de dados de rastreamento para
ALL
; Off para definir a coleta de dados de rastreamento paraNONE
. Consulte METRIC_LEVEL para obter informações sobre os níveis.
Definir o nível na conta com SQL¶
É possível usar SQL para definir níveis de telemetria para a conta.
Para definir um nível de telemetria na conta, faça o seguinte:
Verifique se você tem acesso a uma função com os privilégios necessários para definir níveis.
Use o comando ALTER ACCOUNT para definir o parâmetro apropriado, com base nos dados de telemetria que deseja coletar.
Para a lista de níveis que você pode usar, consulte Níveis de registro, métricas e rastreamento.
O exemplo a seguir define o nível de log como ERROR para a conta.
-- Set the log level on the account ALTER ACCOUNT SET LOG_LEVEL = ERROR;
Definição do nível de um objeto¶
Para cada tipo de dados de telemetria, é possível definir o nível nos seguintes objetos:
Um procedimento armazenado
Uma função definida pelo usuário (UDF) ou uma função de tabela definida pelo usuário (UDTF)
Um banco de dados ou esquema que contém procedimentos e funções
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.
Verifique se você tem os 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 abaixo.
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 |
|
|
Nível de métrica |
|
|
Nível de rastreamento |
|
O código no exemplo a seguir concede os privilégios necessários para alguém que usa a função central_log_admin
para definir o nível de log do banco de dados db1
.
GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
GRANT MODIFY ON DATABASE db1 TO ROLE central_log_admin;
Definição do nível em um banco de dados ou esquema no Snowsight¶
Nota
O suporte do Snowsight para registro em log e rastreamento é um recurso em versão preliminar para todas as contas.
É possível usar o Snowsight para definir os níveis de telemetria. Antes de começar, verifique se você tem acesso a uma função com os privilégios necessários para definir níveis.
Verifique se você tem acesso a uma função com os privilégios necessários para definir níveis.
Faça login no Snowsight.
No menu de navegação, selecione Monitoring » Traces and Logs.
Na página Traces & Logs, selecione o Set Event Level.
Para Set logging & tracing for, selecione o banco de dados e, opcionalmente, o esquema para o qual você está configuração níveis.
Selecione os níveis de 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 paraOFF
. Consulte TRACE_LEVEL para obter informações sobre os níveis.Logs
On para definir a coleta de dados de log para
INFO
. Consulte LOG_LEVEL para obter informações sobre os níveis.Metrics
On para definir a coleta de dados de rastreamento para
ALL
; Off para definir a coleta de dados de rastreamento paraNONE
. Consulte METRIC_LEVEL para obter informações sobre os níveis.
Definir o nível em um banco de dados, esquema ou outro objeto com SQL¶
É possível usar SQL para definir níveis de registro, métricas e rastreamento.
Para definir o nível de telemetria em um objeto, faça o seguinte:
Verifique se você tem acesso a uma função com os privilégios necessários para definir níveis.
Use o comando ALTER <objeto> para definir o parâmetro LOG_LEVEL no objeto.
Para a lista de níveis que você pode usar, consulte Níveis de registro, métricas e rastreamento.
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.
O exemplo a seguir define o nível de registro como ERROR para todas as funções e procedimentos no banco de dados
db
. O exemplo substitui esse nível por WARN para a UDFf1(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;
Para obter mais detalhes sobre como o Snowflake determina o nível de registro efetivo quando o LOG LEVEL é definido em objetos diferentes, consulte Como o Snowflake determina o nível de efeito.
Configuração do nível para a sessão atual¶
Para definir o nível de chamadas para funções e procedimentos feitos na sessão atual:
Verifique se você tem o privilégio para definir o nível na sessão.
Você deve usar uma função que tenha recebido os seguintes privilégios, dependendo dos níveis que você está configurando:
Nível a ser modificado
Parâmetro a ser definido
Privilégios necessários
Nível de registro
MODIFY SESSION LOG LEVEL
Nível de métrica
MODIFY SESSION METRIC LEVEL
Nível de rastreamento
MODIFY SESSION TRACE LEVEL
Por exemplo, para conceder à função
developer_debugging
o privilégio de definir os níveis de registro da sessão atual, execute a seguinte instrução:GRANT MODIFY SESSION LOG LEVEL ON ACCOUNT TO ROLE developer_debugging;
Use o comando ALTER SESSION para definir o parâmetro LOG_LEVEL para a sessão atual.
Por exemplo:
USE ROLE developer_debugging; -- Set the logging level to DEBUG for the current session. ALTER SESSION SET LOG_LEVEL = DEBUG;
Se o parâmetro de nível for definido como níveis diferentes para a sessão atual e nas funções e procedimentos chamados nessa sessão, o Snowflake determinará o nível efetivo a ser usado. Consulte Como o Snowflake determina o nível de efeito.
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.
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
substituiNONE
.Para nível de rastreamento –
ALWAYS
substituiON_EVENT
eOFF
;ON_EVENT
substituiOFF
.