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

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

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

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

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

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

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

ロギング、メトリクス、トレースのレベルを理解する

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

それぞれ以下の方法で設定できます。

ログ:

レベルを設定すると、そのレベル以上のデータのみがイベント・テーブルに取り込まれ、 Snowsight に表示されます。たとえば、 LOG_LEVEL パラメーターを WARN に設定すると、 WARN、 ERROR、および FATAL レベルのメッセージがイベントテーブルにキャプチャされます。

レベルは LOG_LEVEL パラメーターで決定されます。

メトリック:

現在、すべてのメトリクス・データを取得することも、取得しないこともできます。

レベルは METRIC_LEVEL パラメーターで決定されます。

トレース:

イベントテーブルに格納されるトレースイベントのスコープを指定できます。

レベルは TRACE_LEVEL パラメーターで決定されます。

アカウントのレベル設定

各タイプのテレメトリデータについて、アカウントのレベルを設定することができます。このレベルは、 Snowflakeが有効レベルを決定する方法を理解する で説明されているように、オブジェクトとセッションのレベルでオーバーライドすることができます。

必要な権限を持っていることを確認する

アカウントにレベルを設定するには、以下に説明する権限を付与または継承したロールを使用する必要があります。

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

変更するレベル

設定するパラメーター

必要な権限

ログレベル

LOG_LEVEL

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

メトリクスレベル

METRIC_LEVEL

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

トレースレベル

TRACE_LEVEL

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

以下の例のコードは、 central_log_admin ロールを使用する人がアカウントのログレベルを設定するのに必要な権限を付与します。

GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
Copy

Snowsight でアカウントのレベルを設定します。

注釈

Snowsight ロギングとトレースのサポートは、すべてのアカウントで利用可能なプレビュー機能です。

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

  1. レベル設定に必要な権限 を持つロールへのアクセス権限を持っていることを確認します。

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

  3. ナビゲーションメニューで Monitoring » Traces and Logs を選択します。

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

  5. Set logging & tracing for には、 Account を選択します。

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

    All Events

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

    Traces

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

    Logs

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

    Metrics

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

SQL でアカウントにレベルを設定します。

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

アカウントにテレメトリレベルを設定するには、以下のようにします。

  1. レベル設定に必要な権限 を持つロールへのアクセス権限を持っていることを確認します。

  2. ALTER ACCOUNT コマンドを使用して、収集したいテレメトリデータに基づいて適切なパラメーターを設定します。

    使用できるレベルのリストについては、 ロギング、メトリクス、トレースのレベルを理解する をご参照ください。

    以下の例では、このアカウントのログ・レベルを ERROR に設定しています。

    -- Set the log level on the account
    ALTER ACCOUNT SET LOG_LEVEL = ERROR;
    
    Copy

オブジェクトのレベル設定

テレメトリデータの各タイプについて、以下のオブジェクトでレベルを設定できます。

  • ストアドプロシージャ

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

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

注釈

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

必要な権限を持っていることを確認する

オブジェクトにレベルを設定するには、以下に説明する権限が付与または継承されたロールを使用する必要があります。

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

変更するレベル

設定するパラメーター

必要な権限

ログレベル

LOG_LEVEL

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

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

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

メトリクスレベル

METRIC_LEVEL

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

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

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

トレースレベル

TRACE_LEVEL

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

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

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

以下の例のコードは、 central_log_admin ロールを使用する人が db1 データベースのログ・レベルを設定するのに必要な権限を付与します。

GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
GRANT MODIFY ON DATABASE db1 TO ROLE central_log_admin;
Copy

Snowsight でデータベースまたはスキーマにレベルを設定します。

注釈

Snowsight ロギングとトレースのサポートは、すべてのアカウントで利用可能なプレビュー機能です。

Snowsight を使って、テレメトリレベルを設定することができます。開始する前に、 権限のあるロール にアクセスできることを確認してください。

  1. レベル設定に必要な権限 を持つロールへのアクセス権限を持っていることを確認します。

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

  3. ナビゲーションメニューで Monitoring » Traces and Logs を選択します。

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

  5. Set logging & tracing for では、レベルを設定するデータベースとスキーマを選択します。

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

    All Events

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

    Traces

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

    Logs

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

    Metrics

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

SQL を使用して、データベース、スキーマ、またはその他のオブジェクトにレベルを設定します。

SQL を使用して、ロギング、メトリクス、トレースのレベルを設定できます。

オブジェクトのテレメトリレベルを設定するには、次を実行します。

  1. レベル設定に必要な権限 を持つロールへのアクセス権限を持っていることを確認します。

  2. ALTER <オブジェクト> コマンドを使用して、オブジェクトに LOG_LEVEL パラメーターを設定します。

    使用できるレベルのリストについては、 ロギング、メトリクス、トレースのレベルを理解する をご参照ください。

    たとえば、特定の UDF のログレベルを設定するには、 ALTER FUNCTION を使用してその UDF の LOG_LEVEL パラメーターを設定します。別の例として、データベース内のすべての関数とプロシージャのデフォルトのログレベルを設定するには、 ALTER DATABASE を使用してそのデータベースの LOG_LEVEL パラメーターを設定します。

    次の例では、データベース 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;
    
    Copy

    LOG LEVEL がさまざまなオブジェクトに設定されている場合に、Snowflakeが有効なログレベルを決定する方法の詳細については、 Snowflakeが有効レベルを決定する方法を理解する をご参照ください。

現在のセッションにおけるログレベルの設定

現在のセッションで行われた関数およびプロシージャの呼び出しのトレースレベルを設定するには。

  1. オブジェクトにトレースレベルを設定する権限を持っていることを確認します。

    設定するレベルに応じて、以下の権限を付与されたロールを使用する必要があります。

    変更するレベル

    設定するパラメーター

    必要な権限

    ログレベル

    LOG_LEVEL

    MODIFY SESSION LOG LEVEL

    メトリクスレベル

    METRIC_LEVEL

    MODIFY SESSION METRIC LEVEL

    トレースレベル

    TRACE_LEVEL

    MODIFY SESSION TRACE LEVEL

    たとえば、現在のセッションのログレベルを設定する権限を developer_debugging ロールに付与するには、次のステートメントを実行します。

    GRANT MODIFY SESSION LOG LEVEL ON ACCOUNT TO ROLE developer_debugging;
    
    Copy
  2. ALTER SESSION コマンドを使用して、現在のセッションの LOG_LEVEL パラメーターを設定します。

    例:

    USE ROLE developer_debugging;
    
    -- Set the logging level to DEBUG for the current session.
    ALTER SESSION SET LOG_LEVEL = DEBUG;
    
    Copy

現在のセッションとそのセッションで呼び出される関数およびプロシージャに対してレベルパラメーターが異なるレベルに設定されている場合、Snowflakeは使用する有効なレベルを決定します。 Snowflakeが有効レベルを決定する方法を理解する をご参照ください。

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 をオーバーライドします。