Affichage des données de trace¶
Vous pouvez afficher les données de trace via Snowsight ou en interrogeant la table d’événements dans laquelle les données de trace sont stockées.
Note
Avant de pouvoir commencer à utiliser les données de trace, vous devez activer la collecte de données de télémétrie.
Afficher les entrées de trace 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 afficher les données de trace capturées dans la table des événements.
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Monitoring » Traces and Logs.
Dans la page Traces & Logs, vous pouvez afficher les entrées de trace avec les colonnes suivantes :
Colonne
Description
Date
Date à laquelle l’entrée a été enregistrée.
Durée
Durée entre le début et la fin de la trace.
Nom de la trace
Le nom de l’exécutable qui génère l’événement. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.executable.name
.Statut
Error
si la trace a signalé des erreurs ; sinon,Success
.Spans
Nombre de spans dans la trace.
Dans la page Traces & Logs, vous pouvez effectuer les actions suivantes :
Pour filtrer les lignes affichées, utilisez les menus déroulants en haut de la page. Vous pouvez appliquer un filtre avec les caractéristiques suivantes :
Plage de dates pendant laquelle l’entrée a été enregistrée
Statut de la trace, tel que
Success
ouError
Base de données sur laquelle la trace a été exécutée
Pour trier les lignes, sélectionnez le nom de la colonne par laquelle vous souhaitez effectuer le tri.
Pour afficher des informations plus détaillées sur une entrée dans sa page Trace Details, sélectionnez la ligne de l’entrée.
Dans la page Traces Details, vous pouvez afficher une liste de spans.
Un objet span contient des événements de trace. Pour plus d’informations, voir Comment Snowflake représente les événements de trace.
Pour filtrer les lignes affichées, utilisez le menu déroulant en haut de la page. Vous pouvez filtrer par Span Type : UDF, procédure ou Streamlit.
Pour afficher une légende décrivant les données affichées dans les lignes, sélectionnez le menu déroulant Legend, puis sélectionnez la légende que vous souhaitez voir.
Pour afficher des informations plus détaillées sur une entrée, sélectionnez la ligne de l’entrée.
Sur ce panneau, vous pouvez afficher plus d’informations stockées dans la table des événements. Les tableaux suivants décrivent les valeurs du panneau :
Onglet Détails
Détail
Description
ID de trace
Identificateur unique pour les appels effectués à partir d’une requête. Récupéré de la valeur Colonne TRACE
trace_id
. Pour plus d’informations, voir Valeur de trace.ID de span
Un identificateur unique lié au modèle de threading. Récupéré de la valeur Colonne TRACE
span_id
. Pour plus d’informations, voir Valeur de trace.Portée
Espace de noms du code qui émet l’événement. Récupéré de la Colonne SCOPE.
Durée
La durée du span du début à la fin. Pour plus d’informations, voir Pour SPAN RECORD_TYPE.
Nom
Le nom du span. Récupéré de la valeur de la colonne RECORD
name
.ID de span parent
ID unique du span contenant le span sélectionné.
Code de statut
Le code de statut du span. Récupéré de la valeur de la colonne RECORD
status
.Autres attributs
Attributs et valeurs ajoutés par le code utilisateur.
ID de requête
ID de la requête qui a initié la trace. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.query.id
.Nom
Le nom de l’exécutable qui génère l’événement. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.executable.name
.Type
Le type d’exécutable qui a généré l’événement. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.executable.type
.Utilisateur
Nom de l’utilisateur exécutant la fonction ou la procédure. Pour une application Streamlit, le nom de l’utilisateur qui consultait l’application pour un événement donné. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
db.user
.Propriétaire
Le nom du rôle ayant le privilège OWNERSHIP pour l’exécutable. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.owner.name
.Rôle
Le nom du rôle principal dans la session. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.session.role.primary.name
.Entrepôt
Le nom de l’entrepôt qui exécute la requête générant l’événement. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.warehouse.name
.Base de données
Nom de la base de données contenant l’exécutable. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.database.name
.Schéma
Nom du schéma contenant l’exécutable. Récupéré de la valeur de la colonne RESOURCE_ATTRIBUTES
snow.schema.name
.Onglet Événements de span
Affiche les données enregistrées pour les événements de trace. Pour plus d’informations, voir Données d’événements enregistrées.
Onglet Métriques connexes
Affiche des graphiques illustrant les métriques de CPU et de mémoire pour la consommation de ressources par les procédures stockées Snowpark Python et les UDFs. Les métriques associées à l’UDF sont destinées à une requête spécifique. Si vous sélectionnez un span d’UDF dans la liste, les métriques sont liées à un ou plusieurs spans d’UDF pour la même requête. Si vous sélectionnez une procédure dans la liste, vous verrez les métriques de procédure pour un seul span.
Onglet Journaux
Affiche la valeur enregistrée par l’événement. Récupérée de la Colonne VALUE.
Interroger la table des événements pour rechercher des données de trace¶
Une table d’événements comporte un ensemble de colonnes prédéfinies qui contiennent des informations sur les messages enregistrés, notamment :
Horodatage de début du span.
L’heure à laquelle l’événement a été créé.
Le type de données enregistrées, par exemple si les données concernent un span ou un événement de span.
Le nom du span ou de l’événement.
Attributs, le cas échéant, associés au span ou à l’événement.
Pour des informations de référence sur les colonnes de la table d’événements, voir Colonnes de table d’événements.
Exemple d’interrogation sur les données de trace¶
Les sections suivantes illustrent, à l’aide d’exemples, la manière dont vous pouvez interroger la table des événements pour obtenir des données de trace.
Données collectées¶
L’exemple suivant montre le contenu d’un sous-ensemble sélectionné de colonnes d’une table d’événements après la capture de données de trace pour trois gestionnaires distincts écrits en Python.
Pour des informations de référence sur les colonnes de la table d’événements qui collectent des données de trace, voir Données pour les événements de trace.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 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" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Extraits RESOURCE_ATTRIBUTES
Les extraits JSON suivants contiennent deux des attributs inclus dans la colonne RESOURCE_ATTRIBUTES pour chacun des trois gestionnaires dont les données sont incluses dans la sortie précédente. L’instruction SELECT qui suit ces extraits sélectionne les valeurs de ces attributs.
La colonne RESOURCE_ATTRIBUTES contient des données sur la source de l’événement. Pour des informations de référence, voir Colonne 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",
...
}
Interroger avec l’instruction SELECT¶
Lorsque vous demandez des données, vous pouvez sélectionner des valeurs d’attribut dans une colonne en utilisant la notation par crochets, comme dans le format suivant :
COLUMN_NAME['attribute_name']
Le code de l’exemple ci-dessous interroge la table précédente dans le but d’isoler les données relatives à la fonction 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%';
Résultats de la requête¶
La sortie de l’exemple suivant illustre le résultat de la requête.
-------------------------------------------------------------------------------------------------------------------------------------------
| 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 | |
-------------------------------------------------------------------------------------------------------------------------------------------