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.

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Monitoring » Traces and Logs aus.

  3. 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; andernfalls Success.

    Bereiche (Spans)

    Anzahl der Bereiche (Spans) in der Ablaufverfolgung.

  4. 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 oder Error

      • 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.

  5. Um detailliertere Informationen über einen Eintrag auf der Trace Details-Seite anzuzeigen, wählen Sie die Zeile des Eintrags aus.

  6. 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",
  ...
}
Copy

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']
Copy

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%';
Copy

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 |                   |
-------------------------------------------------------------------------------------------------------------------------------------------