ロギング、メトリクス、トレースのレベル設定

イベントテーブルに取り込まれたログメッセージ、ログイベント、トレースデータ、またはメトリックデータのしきい値レベルを設定できます。

各タイプのテレメトリデータは、その目的に特化した独自のレベルセットをサポートします。これらのレベルは、Snowflake がそれぞれ提供している パラメーター を使用して設定することができます。簡素な方法でレベルパラメーターを示す Snowsight を使っていくつかのレベルを設定することもできます。

各タイプのテレメトリデータについて、以下のことができます。

  • その種類のデータに固有のレベルを設定します。

  • オーバーライドされない限り有効な、システム全体のレベルを設定します。

  • セッションまたは特定のオブジェクト(プロシージャや UDFs など)にレベルを設定することで、システム全体のレベルをオーバーライドします。

    レベルは、 session parametersobject parameters の両方で表されます。

注釈

ハンドラーがPythonで記述されている場合、(このトピックで説明されているように)ハンドラーコードを使って SQL で設定したログレベルを上書きすることができます。詳細については、 Pythonを使用したログのしきい値レベルの上書き をご参照ください。

範囲

各タイプのテレメトリーデータについて、要件に最適なスコープで有効になるようにレベルを設定できます。多くの場合、 Snowflakeが有効レベルを決定する方法 で説明されているように、より大きなスコープで設定されたレベルは、より小さなスコープで設定することで上書きできます。たとえば、アカウントスコープで一連のデフォルトレベルを設定し、特定のデータベース内のオブジェクトには異なるレベルを設定することもできます。

これらはそれぞれ、以下のスコープで設定できます。

アカウント:

アカウントに設定されたレベルは、オブジェクトレベルやセッションレベルで上書きされていない限り、アカウント内のすべての場所で有効です。

オブジェクト:

次の種類のオブジェクトに対してテレメトリーレベルを設定できます。

  • プロシージャと関数を含むデータベースまたはスキーマ

  • ストアドプロシージャ

  • ユーザー定義関数(UDF)またはユーザー定義テーブル関数(UDTF)

  • 外部管理 Apache Iceberg™ テーブルに自動リフレッシュが設定されています。

たとえば、特定のUDFに関するAPIsのロギングについてのログメッセージのログレベルを設定するには、/sql-reference/sql/alter-function`を使用して対象のUDFに対してLOG_LEVELパラメーターを設定します。別の例として、データベース内のすべての関数とプロシージャのデフォルトのログレベルを設定するには、 :doc:/sql-reference/sql/alter-database` を使用してそのデータベースの LOG_LEVEL パラメーターを設定します。別の例として、自動リフレッシュが構成された特定の外部管理Icebergテーブルのログイベントレベルを設定するには、/sql-reference/sql/alter-iceberg-table`を使用して対象のテーブルに対してLOG_EVENT_LEVELパラメーターを設定します。ログイベントを出力する他のオブジェクト(記録タイプEVENT)に対してLOG_EVENT_LEVELパラメーターを設定するには、:doc:/sql-reference/sql/alter`コマンドを使用します。

注釈

Streamlitオブジェクトにレベルを設定することはできません。代わりに、オブジェクトを含むデータベースまたはスキーマにレベルを設定します。

セッション:

現在のセッションで行われた関数およびプロシージャの呼び出しのテレメトリーレベルを設定できます。

レベル

テレメトリーデータの種類ごとに、以下のレベルを設定できます。

ログメッセージ:

レベルを設定すると、APIsのロギングによる、深刻度がそのレベル以上のログメッセージのみがイベントテーブルに取り込まれ、|sf-web-interface|に表示されます。たとえば、LOG_LEVELパラメーターをWARNに設定すると、WARN、ERROR、およびFATALのレベルのログメッセージがイベントテーブルに取り込まれます。

LOG_LEVEL パラメーターを設定します。

ログイベント:

レベルを設定すると、深刻度がそのレベル以上のログイベント(レコードタイプがEVENT)のみがイベントテーブルに取り込まれます。例には、Snowpipe、タスク、動的テーブル、Snowpark Container Servicesのコンピューティングプール、Icebergテーブル、データガバナンスタグアクティビティのイベントなどがあります。

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

オブジェクト権限の詳細については、 アクセス制御権限 をご参照ください。

変更するレベル

設定するパラメーター

必要な権限

ログレベル(ログメッセージ)

LOG_LEVEL

アカウント

  • アカウントに対する MODIFY LOG LEVEL

オブジェクト

  • アカウントに対する MODIFY LOG LEVEL

  • レベルを設定するオブジェクトに対する MODIFY 権限

  • プロシージャまたは UDF を含むデータベースまたはスキーマ上でレベルを設定したい USAGE

セッション

  • MODIFY SESSION LOG LEVEL

ログイベントのレベル

LOG_EVENT_LEVEL

アカウント

  • アカウントに対する MODIFY LOG EVENT LEVEL

オブジェクト

  • アカウントに対する MODIFY LOG EVENT LEVEL

  • レベルを設定するオブジェクトに対する MODIFY 権限

  • レベルを設定するオブジェクトが含まれるデータベースまたはスキーマに対するUSAGE

セッション

  • MODIFY SESSION LOG EVENT LEVEL

メトリクスレベル

METRIC_LEVEL

アカウント

  • アカウントに対する MODIFY METRIC LEVEL

オブジェクト

  • アカウントに対する MODIFY METRIC LEVEL

  • レベルを設定するオブジェクトに対する MODIFY 権限

  • プロシージャまたは UDF を含むデータベースまたはスキーマ上でレベルを設定したい USAGE

セッション

  • MODIFY SESSION METRIC LEVEL

トレースレベル

TRACE_LEVEL

アカウント

  • アカウントに対する MODIFY TRACE LEVEL

オブジェクト

  • アカウントに対する MODIFY TRACE LEVEL

  • レベルを設定するオブジェクトに対する MODIFY 権限

  • プロシージャまたは UDF を含むデータベースまたはスキーマ上でレベルを設定したい USAGE

セッション

  • MODIFY SESSION TRACE LEVEL

SQL トレース内の SQL テキスト

SQL_TRACE_QUERY_TEXT

アカウント

  • アカウントの SQL_TRACE_QUERY_TEXT

テレメトリーレベルの設定

テレメトリーレベルは、SQL または場合によっては Snowsight を使用して設定できます。多くの場合、 Snowflakeが有効レベルを決定する方法 で説明されているように、より大きなスコープで設定されたレベルは、より小さなスコープで設定することで上書きできます。

レベルを設定する前に、必要な権限 <label-telemetry_level_privileges>` を持つ :ref:` ロールにアクセスできることを確認してください。

Snowsight を使って、アカウントレベルでテレメトリレベルを設定できます。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで Monitoring » Traces & logs を選択します。

  3. Traces & Logs ページで、 Set Event Level を選択します。

  4. Set logging & tracing for では、次のいずれかから必要なスコープを選択します。

    • Account

    • データベースと、オプションでスキーマ

  5. 調整するテレメトリーデータのレベルを選択します。

    All Events

    On ですべての種類のテレメトリデータの収集をオンにして、 Off ですべての種類のデータの収集をオフにします。

    Traces

    On はトレース・データ・コレクションを ALWAYS に設定します。Off はトレース・データ・コレクションを OFF に設定します。レベルの詳細については、 TRACE_LEVEL をご参照ください。

    Logs

    On はログデータの収集を INFO に設定します。レベルの詳細については、 LOG_LEVEL をご参照ください。

    Metrics

    On はトレース・データ・コレクションを ALL に設定します。Off はトレース・データ・コレクションを NONE に設定します。レベルの詳細については、 METRIC_LEVEL をご参照ください。

Snowflakeが有効レベルを決定する方法

hierarchy of levelsobjectssessions の両方)を使って、テレメトリ level-related parameters をオーバーライドできます。。

例えば、アカウントに対してレベルを 1 つの値に設定した後、階層内の下位にあるオブジェクトにレベルを設定することで、そのレベルをオーバーライドできます。

以下では、セッションおよびオブジェクト レベル パラメーターの階層について説明します。

  • セッションパラメーター の場合、階層はアカウント » ユーザー » セッションです。

    これは、アカウントのパラメーターを設定したり、ユーザーのアカウントレベルのパラメーターを上書きしたり、現在のセッションにおけるユーザーレベルのパラメーターを上書きしたりできることを意味します。

  • オブジェクトパラメーター の場合、階層はアカウント » データベース » スキーマ » オブジェクトです。

    これは、アカウントのパラメーターを設定したり、データベースまたはスキーマのアカウントレベルのパラメーターを上書きしたり、そのデータベースまたはスキーマ内にある、特定のストアドプロシージャや UDFs のデータベースレベルまたはスキーマレベルのパラメーターを上書きしたりできることを意味します。

たとえば、関数に関するログメッセージのLOG_LEVELは、関数を含むアカウントのLOG_LEVELをオーバーライドします。アカウントの LOG_LEVEL が FATAL で、アカウント内のJava LOG_LEVEL の UDF が 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.

セッションパラメーター層とオブジェクトパラメーター層の両方でレベルが設定されている場合は、最も詳細なレベルが使用されます。

  • LOG_LEVEL(APIsのロギングによるログメッセージ)については、次のテーブルに、セッションとオブジェクトに設定されたパラメーターが、使用されるログレベルにどのような影響を与えるかを示す例の一覧を示しています。

    セッションの値

    オブジェクト、スキーマ、データベース、またはアカウントの値

    使用するLOG_LEVEL

    (未設定)

    WARN

    WARN

    DEBUG

    (未設定)

    DEBUG

    WARN

    ERROR

    WARN

    INFO

    DEBUG

    DEBUG

    (未設定)

    (未設定)

    OFF

    同じ優先順位ルールがログイベントのLOG_EVENT_LEVEL(記録のタイプEVENT)に適用されます。

  • メトリック・レベルの場合 --- ALLNONE をオーバーライドします。

  • トレース・レベルの場合 --- ALWAYSON_EVENTOFF をオーバーライドします。ON_EVENTOFF をオーバーライドします。