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;
Weitere Informationen über Berechtigungen finden Sie unter Zugriffssteuerungsrechte.
Zu ändernder Grad |
Einzustellender Parameter |
Erforderliche Berechtigungen |
---|---|---|
Protokolliergrad |
Konto
Objekt
Sitzung
|
|
Metrische Ebene |
Konto
Objekt
Sitzung
|
|
Verfolgungsebene |
Konto
Objekt
Sitzung
|
|
SQL-Text in SQL-Ablaufverfolgung |
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.
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Monitoring » Traces and Logs aus.
Wählen Sie auf der Seite Traces & Logs die Option Set Event Level aus.
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
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 aufOFF
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 aufNONE
einzustellen. Weitere Informationen zu Protokolliergraden finden Sie unter METRIC_LEVEL.
Sie können SQL verwenden, um Telemetriegrade für das Konto und für Objekte wie Datenbanken, Funktionen und Prozeduren festzulegen.
Verwenden Sie den Befehl ALTER ACCOUNT, um den entsprechenden Parameter einzustellen, der auf den Telemetriedaten basiert, die Sie sammeln möchten.
Das folgende Beispiel setzt den Protokolliergrad für das Konto auf ERROR.
-- Set the log level on the account
ALTER ACCOUNT SET LOG_LEVEL = ERROR;
Um den Parameter LOG_LEVEL für das Objekt festzulegen, verwenden Sie den Befehl ALTER <Objekt>.
Im folgenden Beispiel wird der Protokolliergrad für alle Funktionen und Prozeduren in der Datenbank db
auf ERROR gesetzt. Das Beispiel ändert den Protokolliergrad der UDF f1(int)
in WARN.
USE ROLE central_log_admin;
-- Set the log levels on a database and UDF.
ALTER DATABASE db1 SET LOG_LEVEL = ERROR;
ALTER FUNCTION f1(int) SET LOG_LEVEL = WARN;
-- Set the log levels on a Snowpark Container Services service.
ALTER SERVICE test_service SET LOG_LEVEL = ERROR;
Weitere Informationen dazu, wie Snowflake den effektiven Protokolliergrad bestimmt, wenn der LOG LEVEL auf verschiedene Objekte gesetzt ist, finden Sie unter Wie Snowflake den effektiven Grad bestimmt.
Um den Parameter LOG_LEVEL für die aktuelle Sitzung festzulegen, verwenden Sie den Befehl ALTER SESSION.
USE ROLE developer_debugging;
-- Set the logging level to DEBUG for the current session.
ALTER SESSION SET LOG_LEVEL = DEBUG;
Wenn der Gradparameter für die aktuelle Sitzung und für die in dieser Sitzung aufgerufenen Funktionen und Prozeduren auf unterschiedliche Grade gesetzt ist, bestimmt Snowflake den zu verwendenden effektiven Protokolliergrad. Siehe Wie Snowflake den effektiven Grad bestimmt.
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.
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
überschreibtNONE
.Für Protokolliergrad —
ALWAYS
überschreibtON_EVENT
undOFF
;ON_EVENT
überschreibtOFF
.