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

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

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

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

  • 各タイプのテレメトリデータに固有のレベルを設定します。

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

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

    レベルは、 session parametersobject 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;
Copy

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

変更するレベル

設定するパラメーター

必要な権限

ログレベル

LOG_LEVEL

アカウント

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

オブジェクト

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

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

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

セッション

  • MODIFY SESSION LOG 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 and 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 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.
Copy

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

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

    セッションの値

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

    使用されるログレベル

    (未設定)

    WARN

    WARN

    DEBUG

    (未設定)

    DEBUG

    WARN

    ERROR

    WARN

    INFO

    DEBUG

    DEBUG

    (未設定)

    (未設定)

    OFF

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

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