Ablaufverfolgung anzeigen¶
Sie können Ablaufverfolgungsdaten entweder über Snowsight oder durch Abfrage der Ereignistabelle, in der Ablaufverfolgungsdaten gespeichert sind, einsehen.
Bemerkung
Bevor Sie mit der Ablaufverfolgung beginnen können, müssen Sie die Telemetriedatenerfassung aktivieren.
Ablaufverfolgungseinträge in Snowsight anzeigen¶
Bemerkung
Snowsight die Unterstützung für die Protokollierung und Ablaufverfolgung ist ein Feature, das in der Vorschau für alle Konten verfügbar ist.
Sie können Snowsight verwenden, um die in der Ereignistabelle erfassten Ablaufverfolgungsdaten anzuzeigen.
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Monitoring » Traces and Logs aus.
Auf der Traces & Logs-Seite können Sie Ablaufverfolgungseinträge mit den folgenden Spalten anzeigen:
Spalte
Beschreibung
Date
Datum, an dem der Eintrag erfasst wurde.
Dauer
Länge der Zeit vom Beginn bis zum Ende der Ablaufverfolgung.
Name der Ablaufverfolgung
Der Name der ausführbaren Datei (Prozedur, Funktion usw.), die das Ereignis generiert. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.executable.name
-Wert.Status
Error
wenn die Ablaufverfolgung Fehler gemeldet hat; andernfallsSuccess
.Bereiche (Spans)
Anzahl der Bereiche (Spans) in der Ablaufverfolgung.
Auf der Traces & Logs-Seite können Sie die folgenden Aktionen durchführen:
Um die angezeigten Zeilen zu filtern, verwenden Sie die Dropdown-Menüs oben auf der Seite. Sie können nach den folgenden Merkmalen filtern:
Datumsbereich, in dem der Eintrag erfasst wurde
Status der Ablaufverfolgung, z. B.
Success
oderError
Datenbank, auf der die Ablaufverfolgung durchgeführt wurde
Um Zeilen zu sortieren, wählen Sie den Namen der Spalte, nach der Sie sortieren möchten.
Um detailliertere Informationen über einen Eintrag auf der Trace Details-Seite anzuzeigen, wählen Sie die Zeile des Eintrags aus.
Auf der Traces Details-Seite können Sie eine Liste der Zeiträume sehen.
Ein Bereichsobjekt (Span) enthält Ablaufverfolgungsereignisse. Weitere Informationen dazu finden Sie unter Darstellung von Ablaufverfolgungsereignissen in Snowflake.
Um die angezeigten Zeilen zu filtern, verwenden Sie das Dropdown-Menü oben auf der Seite. Sie können nach Span Type filtern: UDF, Prozedur oder Streamlit.
Um eine Legende anzuzeigen, die die in den Zeilen angezeigten Daten beschreibt, wählen Sie das Legend-Dropdown-Menü und dann die gewünschte Legende aus.
Um detailliertere Informationen zu einem Eintrag anzuzeigen, wählen Sie die Zeile des Eintrags aus.
In diesem Bereich können Sie weitere Informationen einsehen, die in der Ereignistabelle gespeichert sind. Die folgenden Tabellen beschreiben die Werte im Bereich:
Details-Registerkarte
Detail
Beschreibung
Ablaufverfolgungs-ID
Ein eindeutiger Bezeichner für Anrufe, die aus einer Abfrage heraus erfolgen. Abgerufen vom Spalte TRACE
trace_id
-Wert. Weitere Informationen dazu finden Sie unter Ablaufverfolgungswert.Bereichs-ID (Span)
Ein eindeutiger Bezeichner, der an das Threading-Modell gebunden ist. Abgerufen vom Spalte TRACE
span_id
-Wert. Weitere Informationen dazu finden Sie unter Ablaufverfolgungswert.Bereich
Namespace des Codes, der das Ereignis ausgibt. Abgerufen aus Spalte SCOPE.
Dauer
Die Dauer des Bereichs (Span) von Anfang bis Ende. Weitere Informationen dazu finden Sie unter RECORD_TYPE: SPAN.
Name
Der Name des Bereichs (Span). Abgerufen aus der RECORD-Spalte
name
-Wert.Übergeordneter Bereich (Span)-ID
Eindeutige ID des Bereichs (Span), der den ausgewählten Bereich enthält.
Statuscode
Der Statuscode des Bereichs (Span). Abgerufen aus der RECORD-Spalte
status
-Wert.Andere Attribute
Attribute und Werte, die durch den Benutzercode hinzugefügt wurden.
Abfrage-ID
ID der Abfrage, die die Ablaufverfolgung ausgelöst hat. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.query.id
-Wert.Name
Der Name der ausführbaren Datei (Prozedur, Funktion usw.), die das Ereignis generiert. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.executable.name
-Wert.Typ
Der Typ der ausführbaren Datei, die das Ereignis erzeugt hat. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.executable.type
-Wert.Benutzer
Der Name des Benutzers, der die Funktion oder Prozedur ausführt. Bei einer Streamlit-App der Name des Benutzers, der die App für ein bestimmtes Ereignis angezeigt hat. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
db.user
-Wert.Eigentümer
Der Name der Rolle mit der Berechtigung OWNERSHIP für die ausführbare Datei. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.owner.name
-Wert.Rolle
Der Name der Primärrolle in der Sitzung. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.session.role.primary.name
-Wert.Warehouse
Der Name des Warehouses, das die Abfrage ausführt, die das Ereignis generiert hat. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.warehouse.name
-Wert.Datenbank
Der Name der Datenbank, die die ausführbare Datei enthält. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.database.name
-Wert.Schema
Der Name des Schemas, das die ausführbare Datei enthält. Abgerufen aus der RESOURCE_ATTRIBUTES-Spalte
snow.schema.name
-Wert.Registerkarte Bereichsereignisse
Zeigt Daten an, die für Ablaufverfolgungsereignisse aufgezeichnet wurden. Weitere Informationen dazu finden Sie unter Erfasste Ereignisdaten.
Registerkarte zusammengefasste Metriken
Zeigt Diagramme an, die CPU- und Speichermetriken für den Ressourcenverbrauch für gespeicherte Prozeduren von Snowpark Python und UDFs veranschaulichen. Die mit UDF verbundenen Metriken beziehen sich auf eine bestimmte Abfrage. Wenn Sie einen UDF-Bereich (Span) aus der Liste auswählen, sind die Metriken mit einer oder mehreren UDF-Bereichen für dieselbe Abfrage zusammengefasst. Wenn Sie eine Prozedur aus der Liste auswählen, sehen Sie die Prozedur-Metriken für einen einzelnen Bereich (Span).
Protokoll-Registerkarte
Zeigt den durch das Ereignis protokollierten Wert an. Abgerufen aus Spalte VALUE.
Abfrage der Ereignistabelle nach Ablaufverfolgungseinträgen¶
Eine Ereignistabelle hat einen Satz von vordefinierten Spalten, die Informationen über die protokollierten Meldungen erfassen, einschließlich:
Der Zeitstempel für den Zeitpunkt, an dem ein Bereich (Span) begann.
Zeitstempel für den Zeitpunkt, an dem das Ereignis erstellt wurde.
Der Typ der erfassten Daten, z. B. ob es sich um Daten für einen Bereich (Span) oder ein Bereichsereignis handelt.
Der Name des Bereichs oder Ereignisses.
Gegebenenfalls Attribute, die mit dem Bereich oder Ereignis verbunden sind.
Referenzinformationen zu den Spalten der Ereignistabelle finden Sie unter Spalten von Ereignistabellen.
Beispiel für die Abfrage von Ablaufverfolgungsdaten¶
In den folgenden Abschnitten wird anhand von Beispieldaten gezeigt, wie Sie die Ereignistabelle nach Ablaufverfolgungsdaten abfragen können.
Gesammelte Daten¶
Die Ausgabe im folgenden Beispiel zeigt den Inhalt einer ausgewählten Teilmenge von Spalten aus einer Ereignistabelle, nachdem Ablaufverfolgungsdaten für drei separate, in Python geschriebene Handler erfasst worden sind.
Referenzinformationen zu Ereignistabellenspalten, die Ablaufverfolgungsdaten sammeln, finden Sie unter Daten zu Ablaufverfolgungsereignissen.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 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" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RESOURCE_ATTRIBUTES-Auszüge
Die folgenden JSON-Auszüge enthalten zwei der in der RESOURCE_ATTRIBUTES-Spalte enthaltenen Attribute für jeden der drei Handler, deren Daten in der vorherigen Ausgabe enthalten sind. Die SELECT-Anweisung, die diesen Auszügen folgt, wählt Werte von diesen Attributen aus.
Die Spalte RESOURCE_ATTRIBUTES enthält Daten zur Quelle des Ereignisses. Weitere Informationen dazu finden Sie unter Spalte 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",
...
}
Abfragen mit SELECT-Anweisung¶
Bei der Abfrage von Daten können Sie Attributwerte innerhalb einer Spalte auswählen, indem Sie die Klammernotation im folgenden Format verwenden:
COLUMN_NAME['attribute_name']
Der Code im folgenden Beispiel fragt die vorangehende Tabelle ab, um die mit der Funktion DIGITS_OF_NUMBER
verbundenen Daten zu isolieren.
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%';
Abfrageergebnisse¶
Die Ausgabe im folgenden Beispiel veranschaulicht das Ergebnis der Abfrage.
-------------------------------------------------------------------------------------------------------------------------------------------
| 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 | |
-------------------------------------------------------------------------------------------------------------------------------------------