ロギング、メトリクス、トレースのレベル設定¶
イベントテーブルに取り込まれたログ、トレース、またはメトリックテレメトリデータのしきい値レベルを設定できます。
各タイプのテレメトリデータは、その目的に特化した独自のレベルセットをサポートします。これらのレベルは、Snowflake がそれぞれ提供している パラメーター を使用して設定することができます。簡素な方法でレベルパラメーターを示す Snowsight を使っていくつかのレベルを設定することもできます。
各タイプのテレメトリデータについて、以下のことができます。
各タイプのテレメトリデータに固有のレベルを設定します。
オーバーライドされない限り有効な、システム全体のレベルをそれぞれ設定します。
セッションまたは特定のオブジェクト(プロシージャや UDFs など)にレベルを設定することで、システム全体のレベルをオーバーライドします。
Levels are represented as both session parameters and object parameters.
注釈
You can use handler code to override the log level you set with SQL (as described in this topic) when your handler is written in Python. For more information, see Pythonを使用したログのしきい値レベルの上書き.
範囲¶
各タイプのテレメトリーデータについて、要件に最適なスコープで有効になるようにレベルを設定できます。多くの場合、 Snowflakeが有効レベルを決定する方法 で説明されているように、より大きなスコープで設定されたレベルは、より小さなスコープで設定することで上書きできます。たとえば、アカウントスコープで一連のデフォルトレベルを設定し、特定のデータベース内のオブジェクトには異なるレベルを設定することもできます。
これらはそれぞれ、以下のスコープで設定できます。
- アカウント:
アカウントに設定されたレベルは、オブジェクトレベルやセッションレベルで上書きされていない限り、アカウント内のすべての場所で有効です。
- オブジェクト:
次の種類のオブジェクトに対してテレメトリーレベルを設定できます。
プロシージャと関数を含むデータベースまたはスキーマ
ストアドプロシージャ
ユーザー定義関数(UDF)またはユーザー定義テーブル関数(UDTF)
外部管理 Apache Iceberg™ テーブルに自動リフレッシュが設定されています。
たとえば、特定の UDF のログレベルを設定するには、 ALTER FUNCTION を使用してその LOG_LEVEL の UDF パラメーターを設定します。別の例として、データベース内のすべての関数とプロシージャのデフォルトのログレベルを設定するには、 /sql-reference/sql/alter-database`を使用してそのデータベースの LOG_LEVEL パラメーターを設定します。別の例として、自動リフレッシュが構成された特定の外部管理Icebergテーブルのログレベルを設定するには、:doc:/sql-reference/sql/alter-iceberg-table` を使用してそのテーブルの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 & 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 を使用して、のアカウントと自動リフレッシュが構成されたデータベース、関数、プロシージャ、外部管理Icebergテーブルなどのオブジェクトにテレメトリレベルを設定します。
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が有効レベルを決定する方法¶
You can override the telemetry level-related parameters (for both objects and sessions) by using a hierarchy of levels.
例えば、アカウントに対してレベルを 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.
セッションパラメーター層とオブジェクトパラメーター層の両方でレベルが設定されている場合は、最も詳細なレベルが使用されます。
次のテーブルに、セッションとオブジェクトに設定されたパラメーターが、使用されるログ レベルにどのような影響を与えるかを示す例をリストします。
セッションの値
オブジェクト、スキーマ、データベース、またはアカウントの値
使用されるログレベル
(未設定)
WARNWARNDEBUG(未設定)
DEBUGWARNERRORWARNINFODEBUGDEBUG(未設定)
(未設定)
OFFメトリック・レベルの場合 ---
ALLはNONEをオーバーライドします。トレース・レベルの場合 ---
ALWAYSはON_EVENTとOFFをオーバーライドします。ON_EVENTはOFFをオーバーライドします。