Visualização dos dados de rastreamento¶
É possível exibir dados de rastreamento por meio do Snowsight ou consultando a tabela de evento na qual os dados de rastreamento estão armazenados.
Nota
Antes de começar a usar dados de rastreamento, é necessário habilitar a coleta de dados de telemetria.
Exibição de entradas de rastreamento 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 Snowsight para exibir dados de rastreamento capturados na tabela de evento.
Faça login no Snowsight.
No menu de navegação, selecione Monitoring » Traces and Logs.
Na página Traces & Logs, é possível exibir entradas de rastreamento com as seguintes colunas:
Coluna
Descrição
Data
Data em que a entrada foi registrada.
Duração
Período de tempo do início ao fim do rastreamento.
Nome do rastreamento
O nome do executável que está gerando o evento. Recuperado do valor
snow.executable.name
da coluna RESOURCE_ATTRIBUTES.Status
Error
se o rastreamento relatou erros; caso contrário,Success
.Spans
Número de spans no rastreamento.
Na página Traces & Logs, é possível executar as seguintes ações:
Para filtrar as linhas exibidas, use os menus suspensos na parte superior da página. É possível filtrar pelas seguintes características:
Intervalo de datas durante o qual a entrada foi registrada
Status do rastreamento, como
Success
ouError
Banco de dados no qual o rastreamento foi executado
Para classificar linhas, selecione o nome da coluna pela qual você deseja classificar.
Para exibir informações mais detalhadas sobre uma entrada em sua página Trace Details, selecione a linha da entrada.
Na página Traces Details, é possível exibir uma lista de spans.
Um objeto span contém eventos de rastreamento. Para obter mais informações, consulte Como o Snowflake representa eventos de rastreamento.
Para filtrar as linhas exibidas, use o menu suspenso na parte superior da página. É possível filtrar por Span Type: UDF, procedimento ou Streamlit.
Para exibir uma legenda descrevendo os dados mostrados nas linhas, selecione o menu suspenso Legend e, em seguida, selecione a legenda que deseja ver.
Para exibir informações mais detalhadas sobre uma entrada, selecione a linha da entrada.
Neste painel, você pode exibir mais informações armazenadas na tabela de evento. As tabelas a seguir descrevem os valores no painel:
Guia de detalhes
Detalhe
Descrição
ID de rastreamento
Um identificador único para chamadas feitas a partir de uma consulta. Recuperado do valor Coluna TRACE
trace_id
. Para obter mais informações, consulte Valor de rastreamento.ID de span
Um identificador exclusivo vinculado ao modelo de threading. Recuperado do valor Coluna TRACE
span_id
. Para obter mais informações, consulte Valor de rastreamento.Escopo
Namespace do código que emite o evento. Recuperado de Coluna SCOPE.
Duração
A duração do span do início ao fim. Para obter mais informações, consulte Para SPAN RECORD_TYPE.
Nome
O nome do span. Recuperado do valor
name
da coluna RECORD.ID do span pai
ID único do span com o span selecionado.
Código de status
O código de status do span. Recuperado do valor
status
da coluna RECORD.Outros atributos
Atributos e valores adicionados pelo código do usuário.
ID de consulta
ID da consulta que iniciou o rastreamento. Recuperado do valor
snow.query.id
da coluna RESOURCE_ATTRIBUTES.Nome
O nome do executável que está gerando o evento. Recuperado do valor
snow.executable.name
da coluna RESOURCE_ATTRIBUTES.Tipo
O tipo de executável que gerou o evento. Recuperado do valor
snow.executable.type
da coluna RESOURCE_ATTRIBUTES.Usuário
O nome do usuário que executa a função ou procedimento. Para um aplicativo Streamlit, o nome do usuário que estava visualizando o aplicativo para um determinado evento. Recuperado do valor
db.user
da coluna RESOURCE_ATTRIBUTES.Proprietário
O nome da função com privilégio OWNERSHIP para o executável. Recuperado do valor
snow.owner.name
da coluna RESOURCE_ATTRIBUTES.Função
O nome da função principal na sessão. Recuperado do valor
snow.session.role.primary.name
da coluna RESOURCE_ATTRIBUTES.Warehouse
O nome do warehouse que executa a consulta que gera o evento. Recuperado do valor
snow.warehouse.name
da coluna RESOURCE_ATTRIBUTES.Banco de dados
O nome do banco de dados que contém o executável. Recuperado do valor
snow.database.name
da coluna RESOURCE_ATTRIBUTES.Esquema
O nome do esquema que contém o executável. Recuperado do valor
snow.schema.name
da coluna RESOURCE_ATTRIBUTES.Guia Eventos de span
Exibe dados registrados para eventos de rastreamento. Para obter mais informações, consulte Dados de eventos registrados.
Guia Métricas relacionadas
Exibe gráficos ilustrando métricas de CPU e memória para consumo de recurso pelos procedimentos armazenados do Snowpark Python e de UDFs. Métricas associadas à UDF são para uma consulta específica. Se você selecionar um span de UDF da lista, as métricas serão relacionadas a um ou mais spans de UDF para a mesma consulta. Se você selecionar um procedimento da lista, verá métricas de procedimento para um único span.
Guia Logs
Exibe o valor registrado pelo evento. Recuperado de Coluna VALUE.
Consulta da tabela de evento para entradas de rastreamento¶
Uma tabela de eventos tem um conjunto de colunas predefinidas que capturam informações sobre as mensagens registradas, inclusive:
O carimbo de data/hora do início de um intervalo.
O carimbo de data/hora em que o evento foi criado.
O tipo de dados registrado, como, por exemplo, se os dados são para um span ou evento de span.
O nome do span ou evento.
Atributos, se houver, associados ao span ou evento.
Para obter informações de referência sobre colunas da tabela de evento, consulte Colunas da tabela de eventos.
Exemplo de consulta de dados de rastreamento¶
As seções a seguir ilustram com dados de exemplo como você pode consultar a tabela de eventos para obter dados de rastreamento.
Dados coletados¶
A saída no exemplo a seguir mostra o conteúdo de um subconjunto selecionado de colunas de uma tabela de eventos depois que os dados de rastreamento foram capturados para três manipuladores separados escritos em Python.
Para obter informações de referência sobre colunas da tabela de evento que coletam dados de rastreamento, consulte Dados para eventos de rastreamento.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP | START_TIMESTAMP | RESOURCE_ATTRIBUTES | RECORD_TYPE | RECORD | RECORD_ATTRIBUTES |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | 2023-04-20 0:45:49 | **See excerpt below** | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "digits_of_number", "status": { "code": "STATUS_CODE_UNSET" } } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_init" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_process" } | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_end_partition" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | 2023-04-20 0:46:00 | | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "times_two", "status": { "code": "STATUS_CODE_UNSET" } } | { "example.func.times_two": "begin", "example.func.times_two.response": 8 } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | | | SPAN_EVENT | { "name": "event_without_attributes" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | | | SPAN_EVENT | { "name": "event_with_attributes" } | { "example.key1": "value1", "example.key2": "value2" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | 2023-04-20 0:46:08 | | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "do_tracing", "status": { "code": "STATUS_CODE_UNSET" } } | { "example.proc.do_tracing": "begin" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | | | SPAN_EVENT | { "name": "event_with_attributes" } | { "example.key1": "value1", "example.key2": "value2" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Trechos de RESOURCE_ATTRIBUTES
Os trechos JSON a seguir contêm dois dos atributos inclusos na coluna RESOURCE_ATTRIBUTES para cada um dos três manipuladores cujos dados estão inclusos na saída anterior. A instrução SELECT que segue esses trechos seleciona valores desses atributos.
A coluna RESOURCE_ATTRIBUTES contém dados sobre a origem do evento. Para informações de referência, veja Coluna RESOURCE_ATTRIBUTES.
{
...
"snow.executable.name": "DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER)",
"snow.executable.type": "FUNCTION",
...
}
{
...
"snow.executable.name": "TIMES_TWO(X NUMBER):NUMBER(38,0)",
"snow.executable.type": "FUNCTION",
...
}
{
...
"snow.executable.name": "DO_TRACING():VARIANT",
"snow.executable.type": "PROCEDURE",
...
}
Consulta com instrução SELECT¶
Ao consultar dados, você pode selecionar valores de atributos em uma coluna usando a notação de colchetes, como no formulário a seguir:
COLUMN_NAME['attribute_name']
O código no exemplo abaixo consulta a tabela anterior com a intenção de isolar os dados relacionados à função DIGITS_OF_NUMBER
.
SET EVENT_TABLE_NAME='my_db.public.my_events';
SELECT
TIMESTAMP as time,
RESOURCE_ATTRIBUTES['snow.executable.name'] as handler_name,
RESOURCE_ATTRIBUTES['snow.executable.type'] as handler_type,
RECORD['name'] as event_name,
RECORD_ATTRIBUTES as attributes
FROM
IDENTIFIER($event_table_name)
WHERE
RECORD_TYPE = 'SPAN_EVENT'
AND HANDLER_NAME LIKE 'DIGITS_OF_NUMBER%';
Resultados de consultas¶
A saída no exemplo a seguir ilustra o resultado da consulta.
-------------------------------------------------------------------------------------------------------------------------------------------
| TIME | HANDLER_NAME | HANDLER_TYPE | EVENT_NAME | ATTRIBUTES |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_init | |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_process | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_end_partition | |
-------------------------------------------------------------------------------------------------------------------------------------------