ロギング、メトリクス、トレースのレベル設定¶
イベントテーブルに取り込まれたログ、トレース、またはメトリックテレメトリデータのしきい値レベルを設定できます。
各タイプのテレメトリデータは、その目的に特化した独自のレベルセットをサポートします。これらのレベルは、Snowflake がそれぞれ提供している パラメーター を使用して設定することができます。簡素な方法でレベルパラメーターを示す Snowsight を使っていくつかのレベルを設定することもできます。
各タイプのテレメトリデータについて、以下のことができます。
各タイプのテレメトリデータに固有のレベルを設定します。
オーバーライドされない限り有効な、システム全体のレベルをそれぞれ設定します。
セッションまたは特定のオブジェクト(プロシージャや UDFs など)にレベルを設定することで、システム全体のレベルをオーバーライドします。
レベルは、 session parameters と object parameters の両方で表されます。
注釈
ハンドラーがPythonで記述されている場合、(このトピックで説明されているように)ハンドラーコードを使って SQL で設定したログレベルを上書きすることができます。詳細については、 Pythonを使用したログのしきい値レベルの上書き をご参照ください。
範囲¶
各タイプのテレメトリーデータについて、要件に最適なスコープで有効になるようにレベルを設定できます。多くの場合、 Snowflakeが有効レベルを決定する方法 で説明されているように、より大きなスコープで設定されたレベルは、より小さなスコープで設定することで上書きできます。たとえば、アカウントスコープで一連のデフォルトレベルを設定し、特定のデータベース内のオブジェクトには異なるレベルを設定することもできます。
これらはそれぞれ、以下のスコープで設定できます。
- アカウント:
アカウントに設定されたレベルは、オブジェクトレベルやセッションレベルで上書きされていない限り、アカウント内のすべての場所で有効です。
- オブジェクト:
次の種類のオブジェクトに対してテレメトリーレベルを設定できます。
プロシージャと関数を含むデータベースまたはスキーマ
ストアドプロシージャ
ユーザー定義関数(UDF)またはユーザー定義テーブル関数(UDTF)
たとえば、特定の UDF のログレベルを設定するには、 ALTER FUNCTION を使用してその UDF の LOG_LEVEL パラメーターを設定します。別の例として、データベース内のすべての関数とプロシージャのデフォルトのログレベルを設定するには、 ALTER DATABASE を使用してそのデータベースの LOG_LEVEL パラメーターを設定します。
注釈
Streamlitオブジェクトにレベルを設定することはできません。代わりに、オブジェクトを含むデータベースまたはスキーマにレベルを設定します。
- セッション:
現在のセッションで行われた関数およびプロシージャの呼び出しのテレメトリーレベルを設定できます。
レベル¶
テレメトリーデータの種類ごとに、以下のレベルを設定できます。
- ログ:
レベルを設定すると、そのレベル以上のデータのみがイベントテーブルに取り込まれ、Snowsight に表示されます。たとえば、 LOG_LEVEL パラメーターを WARN に設定すると、 WARN、 ERROR、および FATAL レベルのメッセージがイベントテーブルにキャプチャされます。
LOG_LEVEL パラメーターを設定します。
- メトリック:
現在、すべてのメトリクス・データを取得することも、取得しないこともできます。
METRIC_LEVEL パラメーターを設定します。
- トレース:
次の特性を指定できます。
イベントテーブルに格納されるトレースイベントのスコープ
TRACE_LEVEL パラメーターを設定します。
トレースされた SQL ステートメントで SQL テキストをキャプチャするかどうか
これは SQL_TRACE_QUERY_TEXT パラメーターで決定されます。詳細については、 SQL ステートメントトレース をご参照ください。
必要な権限¶
オブジェクトにレベルを設定するには、このセクションで説明する権限が付与または継承されたロールを使用する必要があります。
たとえば、以下の例のコードは、central_log_admin
ロールを使用する人がアカウントのログレベルを設定するのに必要な権限を付与します。
GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
オブジェクト権限の詳細については、 アクセス制御権限 をご参照ください。
変更するレベル |
設定するパラメーター |
必要な権限 |
---|---|---|
ログレベル |
アカウント
オブジェクト
セッション
|
|
メトリクスレベル |
アカウント
オブジェクト
セッション
|
|
トレースレベル |
アカウント
オブジェクト
セッション
|
|
SQL トレース内の SQL テキスト |
アカウント
|
テレメトリーレベルの設定¶
テレメトリーレベルは、SQL または場合によっては Snowsight を使用して設定できます。多くの場合、 Snowflakeが有効レベルを決定する方法 で説明されているように、より大きなスコープで設定されたレベルは、より小さなスコープで設定することで上書きできます。
レベルを設定する前に、必要な権限 <label-telemetry_level_privileges>` を持つ :ref:` ロールにアクセスできることを確認してください。
Snowsight を使って、アカウントレベルでテレメトリレベルを設定できます。
Snowsight にサインインします。
ナビゲーションメニューで Monitoring » Traces and Logs を選択します。
Traces & Logs ページで、 Set Event Level を選択します。
Set logging & tracing for では、次のいずれかから必要なスコープを選択します。
Account
データベースと、オプションでスキーマ
調整するテレメトリーデータのレベルを選択します。
All Events
On ですべての種類のテレメトリデータの収集をオンにして、 Off ですべての種類のデータの収集をオフにします。
Traces
On はトレース・データ・コレクションを
ALWAYS
に設定します。 Off はトレース・データ・コレクションをOFF
に設定します。レベルの詳細については、 TRACE_LEVEL をご参照ください。Logs
On はログデータの収集を
INFO
に設定します。レベルの詳細については、 LOG_LEVEL をご参照ください。Metrics
On はトレース・データ・コレクションを
ALL
に設定します。 Off はトレース・データ・コレクションをNONE
に設定します。レベルの詳細については、 METRIC_LEVEL をご参照ください。
SQL を使用して、アカウントおよびデータベース、関数、プロシージャなどのオブジェクトのテレメトリーレベルを設定できます。
ALTER ACCOUNT コマンドを使用して、収集したいテレメトリデータに基づいて適切なパラメーターを設定します。
以下の例では、このアカウントのログレベルを ERROR に設定しています。
-- Set the log level on the account
ALTER ACCOUNT SET LOG_LEVEL = ERROR;
オブジェクトに LOG_LEVEL パラメーターを設定するには、ALTER <オブジェクト> コマンドを使用します。
次の例では、データベース db
内のすべての関数とプロシージャのログレベルを ERROR に設定します。この例では、 UDF f1(int)
のためにこのレベルを 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;
LOG LEVEL がさまざまなオブジェクトに設定されている場合に、Snowflakeが有効なログレベルを決定する方法の詳細については、 Snowflakeが有効レベルを決定する方法 をご参照ください。
現在のセッションに LOG_LEVEL パラメーターを設定するには、ALTER SESSION コマンドを使用します。
USE ROLE developer_debugging;
-- Set the logging level to DEBUG for the current session.
ALTER SESSION SET LOG_LEVEL = DEBUG;
現在のセッションとそのセッションで呼び出される関数およびプロシージャに対してレベルパラメーターが異なるレベルに設定されている場合、Snowflakeは使用する有効なレベルを決定します。Snowflakeが有効レベルを決定する方法 をご参照ください。
Snowflakeが有効レベルを決定する方法¶
hierarchy of levels (objects と sessions の両方)を使って、テレメトリ level-related parameters をオーバーライドできます。。
例えば、アカウントに対してレベルを 1 つの値に設定した後、階層内の下位にあるオブジェクトにレベルを設定することで、そのレベルをオーバーライドできます。
以下では、セッションおよびオブジェクト レベル パラメーターの階層について説明します。
セッションパラメーター の場合、階層はアカウント » ユーザー » セッションです。
これは、アカウントのパラメーターを設定したり、ユーザーのアカウントレベルのパラメーターを上書きしたり、現在のセッションにおけるユーザーレベルのパラメーターを上書きしたりできることを意味します。
オブジェクトパラメーター の場合、階層はアカウント » データベース » スキーマ » オブジェクトです。
これは、アカウントのパラメーターを設定したり、データベースまたはスキーマのアカウントレベルのパラメーターを上書きしたり、そのデータベースまたはスキーマ内にある、特定のストアドプロシージャや UDFs のデータベースレベルまたはスキーマレベルのパラメーターを上書きしたりできることを意味します。
たとえば、関数の LOG_LEVEL は、その関数を含むアカウントの LOG_LEVEL を上書きします。アカウントの LOG_LEVEL が FATAL で、アカウント内のJava UDF の LOG_LEVEL が INFO の場合、有効な LOG_LEVEL は INFO です(アカウントではなく関数のレベル)。
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.
セッションパラメーター層とオブジェクトパラメーター層の両方でレベルが設定されている場合は、最も詳細なレベルが使用されます。
次のテーブルに、セッションとオブジェクトに設定されたパラメーターが、使用されるログ レベルにどのような影響を与えるかを示す例をリストします。
セッションの値
オブジェクト、スキーマ、データベース、またはアカウントの値
使用されるログレベル
(未設定)
WARN
WARN
DEBUG
(未設定)
DEBUG
WARN
ERROR
WARN
INFO
DEBUG
DEBUG
(未設定)
(未設定)
OFF
メトリック・レベルの場合 ---
ALL
はNONE
をオーバーライドします。トレース・レベルの場合 ---
ALWAYS
はON_EVENT
とOFF
をオーバーライドします。ON_EVENT
はOFF
をオーバーライドします。