Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung

Sie können die Schwellenwerte für Protokoll-, Ablaufverfolgungs- oder Metrik-Telemetriedaten festlegen, die in einer Ereignistabelle erfasst werden.

Jeder Telemetriedatentyp unterstützt eine eigene Reihe von Graden, die für ihren Zweck spezifisch sind. Sie können diese Grade mit Hilfe des Parameters festlegen, den Snowflake für jeden Grad bereitstellt. Sie können einige Grade auch mit Snowsight festlegen, das die Gradparameter auf vereinfachte Weise darstellt.

Für jeden Typ von Telemetriedaten können Sie Folgendes tun:

  • Legen Sie für jeden Typ von Telemetriedaten spezifische Grade fest.

  • Legen Sie jeweils systemweite Grade fest, die in Kraft bleiben, wenn sie nicht überschrieben werden.

  • Überschreiben Sie die systemweiten Grade, indem Sie den Grad für eine Sitzung oder für bestimmte Objekte (wie Prozeduren und UDFs einstellen).

    Die Grade werden sowohl als Sitzungsparameter als auch als Objektparameter dargestellt.

Bemerkung

Sie können Handler-Code verwenden, um den mit SQL eingestellten Protokolliergrad (wie unter diesem Thema beschrieben) zu überschreiben, wenn Ihr Handler in Python geschrieben ist. Weitere Informationen dazu finden Sie unter Überschreiben von Protokollschwellenwerten mit Python.

Bereich

Für jede Art von Telemetriedaten können Sie Grade festlegen, sodass diese in dem Bereich in Kraft sind, der Ihren Anforderungen am besten entspricht. In vielen Fällen können Sie in einem größeren Bereich festgelegte Grade überschreiben, indem Sie sie in einem kleineren Bereich festlegen, wie in Wie Snowflake den effektiven Grad bestimmt beschrieben. Beispielsweise möchten Sie möglicherweise eine Reihe von Standardgraden im Kontobereich festlegen und dann unterschiedliche Grade für Objekte in einer bestimmten Datenbank festlegen.

Sie können jede dieser Einstellungen in den folgenden Bereichen vornehmen:

Konto:

Ein für das Konto festgelegter Grad gilt überall im Konto, außer wenn er durch Festlegung auf Objekt- oder Sitzungsebene überschrieben wird.

Objekt:

Sie können die Telemetriegrade für die folgenden Arten von Objekten festlegen:

  • Datenbank oder Schema mit entsprechenden Prozeduren und Funktionen

  • Gespeicherte Prozeduren

  • Benutzerdefinierte Funktion (UDF) oder benutzerdefinierte Tabellenfunktion (UDTF)

Um beispielsweise den Protokolliergrad für eine bestimmte UDF einzustellen, verwenden Sie ALTER FUNCTION zum Einstellen des Parameters LOG_LEVEL für diese UDF. Oder um beispielsweise den Standard-Protokolliergrad für alle Funktionen und Prozeduren in einer Datenbank festzulegen, verwenden Sie ALTER DATABASE zum Einstellen des Parameters LOG_LEVEL für diese Datenbank.

Bemerkung

Sie können die Gradeinstellung nicht für Streamlit-Objekte vornehmen. Setzen Sie stattdessen den Grad auf die Datenbank oder das Schema, das das Objekt enthält.

Sitzung:

Sie können den Telemetriegrad für Aufrufe von Funktionen und Prozeduren einstellen, die in der aktuellen Sitzung ausgeführt werden.

Grade

Sie können für jede Art von Telemetriedaten die folgenden Grade festlegen:

Protokollieren:

Wenn Sie einen Grad festlegen, werden nur Daten auf diesem Grad und schwerwiegenderen Graden in einer Ereignistabelle erfasst und in Snowsight sichtbar. Wenn Sie beispielsweise den Parameter LOG_LEVEL auf WARN setzen, werden Meldungen der Schweregrade WARN, ERROR und FATAL in der Ereignistabelle erfasst.

Legen Sie den Parameter LOG_LEVEL fest.

Kennzahlen:

Sie können derzeit alle Metrikdaten erfassen lassen oder keine.

Legen Sie den Parameter METRIC_LEVEL fest.

Ablaufverfolgung:

Sie können die folgenden Merkmale angeben:

  • Bereich der in der Ereignistabelle gespeicherten Daten zu Ablaufverfolgungsereignissen

    Legen Sie den Parameter TRACE_LEVEL fest.

  • Ob SQL-Text in einer verfolgten SQL-Anweisung erfasst werden soll

    Dies wird durch den Parameter SQL_TRACE_QUERY_TEXT bestimmt. Weitere Informationen dazu finden Sie unter Ablaufverfolgung von SQL-Anweisungen.

Erforderliche Berechtigungen

Um Grade auf einem Objekt festzulegen, müssen Sie eine Rolle verwenden, die die in diesem Abschnitt beschriebenen Berechtigungen besitzt oder erbt.

Der Code im folgenden Beispiel gewährt etwa die Berechtigungen, die jemand mit der Rolle central_log_admin benötigt, um die Protokolliergrade für das Konto festzulegen.

GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
Copy

Weitere Informationen über Berechtigungen finden Sie unter Zugriffssteuerungsrechte.

Zu ändernder Grad

Einzustellender Parameter

Erforderliche Berechtigungen

Protokolliergrad

LOG_LEVEL

Konto

  • MODIFY LOG LEVEL für das Konto

Objekt

  • MODIFY LOG LEVEL für das Konto

  • MODIFY auf das Objekt, für das Sie den Grad festlegen möchten

  • USAGE auf der Datenbank oder dem Schema, das die Prozedur oder UDF enthält, für die Sie die Gradeinstellung vornehmen möchten

Sitzung

  • MODIFY SESSION LOG LEVEL

Metrische Ebene

METRIC_LEVEL

Konto

  • MODIFY METRIC LEVEL für das Konto

Objekt

  • MODIFY METRIC LEVEL für das Konto

  • MODIFY auf das Objekt, für das Sie den Grad festlegen möchten

  • USAGE auf der Datenbank oder dem Schema, das die Prozedur oder UDF enthält, für die Sie die Gradeinstellung vornehmen möchten

Sitzung

  • MODIFY SESSION METRIC LEVEL

Verfolgungsebene

TRACE_LEVEL

Konto

  • MODIFY TRACE LEVEL für das Konto

Objekt

  • MODIFY TRACE LEVEL für das Konto

  • MODIFY auf das Objekt, für das Sie den Grad festlegen möchten

  • USAGE auf der Datenbank oder dem Schema, das die Prozedur oder UDF enthält, für die Sie die Gradeinstellung vornehmen möchten

Sitzung

  • MODIFY SESSION TRACE LEVEL

SQL-Text in SQL-Ablaufverfolgung

SQL_TRACE_QUERY_TEXT

Konto

  • SQL_TRACE_QUERY_TEXT für das Konto

Einstellen der Telemetriegrade

Sie können die Telemetriegrade entweder mit SQL oder in einigen Fällen über Snowsight festlegen. In vielen Fällen können Sie in einem größeren Bereich festgelegte Grade überschreiben, indem Sie sie in einem kleineren Bereich festlegen, wie in Wie Snowflake den effektiven Grad bestimmt beschrieben.

Bevor Sie beginnen, verifizieren Sie, dass Sie Zugriff auf eine Rolle mit den erforderlichen Berechtigungen haben.

Sie können Snowsight verwenden, um die Telemetriegrade auf der Kontoebene einzustellen.

  1. Melden Sie sich bei Snowsight an.

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

  3. Wählen Sie auf der Seite Traces & Logs die Option Set Event Level aus.

  4. Für Set logging & tracing for wählen Sie aus den folgenden Optionen den gewünschten Bereich aus:

    • Account

    • Die Datenbank und optional das Schema

  5. Wählen Sie die Grade der Telemetriedaten aus, die Sie anpassen möchten.

    All Events

    On zum Einschalten der Erfassung aller Arten von Telemetriedaten; Off zum Abschalten der Erfassung aller Arten von Daten.

    Traces

    On um die Ablaufverfolgung auf ALWAYS einzustellen; Off um die Ablaufverfolgung auf OFF einzustellen. Weitere Informationen zu Protokolliergraden finden Sie unter TRACE_LEVEL.

    Logs

    On um die Protokolldatenerfassung auf INFO einzustellen. Weitere Informationen zu Protokolliergraden finden Sie unter LOG_LEVEL.

    Metrics

    On um die Ablaufverfolgung auf ALL einzustellen; Off um die Ablaufverfolgung auf NONE einzustellen. Weitere Informationen zu Protokolliergraden finden Sie unter METRIC_LEVEL.

Wie Snowflake den effektiven Grad bestimmt

Für Telemetriedaten können Sie auf Grade bezogene Parameter (sowohl für Objekte als auch für Sitzungen) überschreiben, indem Sie eine Hierarchie von Graden verwenden.

Sie können z. B. einen Grad auf einen Wert für das Konto einstellen und diesen dann überschreiben, indem Sie den Grad für ein Objekt festlegen, der in der Hierarchie tiefer liegt.

Im Folgenden wird die Hierarchie für Gradparameter auf Sitzungs- und Objektebene beschrieben.

  • Die Hierarchie für Sitzungsparameter ist: Konto » Benutzer » Sitzung.

    Das bedeutet: Sie können den Parameter für ein Konto festlegen, und dann können Sie den Parameter für einen Benutzer auf Kontoebene überschreiben und Sie können den Parameter für die aktuelle Sitzung auf Benutzerebene überschreiben.

  • Die Hierarchie für Objektparameter ist: Konto » Datenbank » Schema » Objekt.

    Das bedeutet: Sie können den Parameter für ein Konto festlegen, und dann können Sie den Parameter für eine Datenbank oder ein Schema auf Kontoebene überschreiben und Sie können den Datenbank- bzw. Schema-spezifischen Parameter für gespeicherte Prozeduren und UDFs in dieser Datenbank bzw. in diesem Schema überschreiben.

So überschreibt beispielsweise der LOG_LEVEL für eine Funktion den LOG_LEVEL für das Konto, das die Funktion enthält. Wenn der LOG_LEVEL für das Konto FATAL ist und der LOG_LEVEL für die Java-UDF in dem Konto INFO ist, dann ist der effektive LOG_LEVEL INFO (der Grad für die Funktion, nicht der Grad für das Konto):

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

In Fällen, in denen der Grad sowohl in der Sitzungs- als auch in der Objektparameterhierarchie gesetzt ist, wird der ausführlichste Grad verwendet.

  • Für die Protokolliergrade finden Sie in der folgenden Tabelle Beispiele dafür, wie sich die für die Sitzung und das Objekt festgelegten Parameter auf den verwendeten Protokolliergrad auswirken.

    Wert für Sitzung

    Wert für Objekt, Schema, Datenbank oder Konto

    Verwendeter Protokolliergrad

    (nicht festgelegt)

    WARN

    WARN

    DEBUG

    (nicht festgelegt)

    DEBUG

    WARN

    ERROR

    WARN

    INFO

    DEBUG

    DEBUG

    (nicht festgelegt)

    (nicht festgelegt)

    OFF

  • Für metrische Ebene — ALL überschreibt NONE.

  • Für Protokolliergrad — ALWAYS überschreibt ON_EVENT und OFF; ON_EVENT überschreibt OFF.