ロギング、メトリクス、トレースのレベル設定¶
イベント・テーブルに取り込まれたログ、トレース、またはメトリクス・データのしきい値レベルを設定できます。
各タイプのテレメトリデータについて、以下のことができます。
各タイプのテレメトリデータに固有のレベルを設定します。
オーバーライドされない限り有効な、システム全体のレベルをそれぞれ設定します。
セッションまたは特定のオブジェクト(プロシージャや UDFs など)にレベルを設定することで、システム全体のレベルをオーバーライドします。
レベルは、 session parameters と 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 がそれぞれ提供している パラメーター を使用して設定することができます。簡素な方法でレベルパラメーターを示す Snowsight を使っていくつかのレベルを設定することもできます。
それぞれ以下の方法で設定できます。
SQL との database, schema, or other object level で。
database or schema level で Snowsight を使用。
- ログ:
レベルを設定すると、そのレベル以上のデータのみがイベント・テーブルに取り込まれ、 Snowsight に表示されます。たとえば、 LOG_LEVEL パラメーターを WARN に設定すると、 WARN、 ERROR、および FATAL レベルのメッセージがイベントテーブルにキャプチャされます。
レベルは LOG_LEVEL パラメーターで決定されます。
- メトリック:
現在、すべてのメトリクス・データを取得することも、取得しないこともできます。
レベルは METRIC_LEVEL パラメーターで決定されます。
- トレース:
イベントテーブルに格納されるトレースイベントのスコープを指定できます。
レベルは TRACE_LEVEL パラメーターで決定されます。
アカウントのレベル設定¶
各タイプのテレメトリデータについて、アカウントのレベルを設定することができます。このレベルは、 Snowflakeが有効レベルを決定する方法を理解する で説明されているように、オブジェクトとセッションのレベルでオーバーライドすることができます。
必要な権限を持っていることを確認する¶
アカウントにレベルを設定するには、以下に説明する権限を付与または継承したロールを使用する必要があります。
権限の詳細については、 アクセス制御権限 をご参照ください。
変更するレベル |
設定するパラメーター |
必要な権限 |
---|---|---|
ログレベル |
アカウントに対する MODIFY LOG LEVEL |
|
メトリクスレベル |
アカウントに対する MODIFY METRIC LEVEL |
|
トレースレベル |
アカウントに対する MODIFY TRACE LEVEL |
以下の例のコードは、 central_log_admin
ロールを使用する人がアカウントのログレベルを設定するのに必要な権限を付与します。
GRANT MODIFY LOG LEVEL ON ACCOUNT TO ROLE central_log_admin;
Snowsight でアカウントのレベルを設定します。¶
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 でアカウントにレベルを設定します。¶
SQL を使って、アカウントのテレメトリレベルを設定できます。
アカウントにテレメトリレベルを設定するには、以下のようにします。
レベル設定に必要な権限 を持つロールへのアクセス権限を持っていることを確認します。
ALTER ACCOUNT コマンドを使用して、収集したいテレメトリデータに基づいて適切なパラメーターを設定します。
使用できるレベルのリストについては、 ロギング、メトリクス、トレースのレベルを理解する をご参照ください。
以下の例では、このアカウントのログ・レベルを ERROR に設定しています。
-- Set the log level on the account ALTER ACCOUNT SET LOG_LEVEL = ERROR;
オブジェクトのレベル設定¶
テレメトリデータの各タイプについて、以下のオブジェクトでレベルを設定できます。
ストアドプロシージャ
ユーザー定義関数(UDF)またはユーザー定義テーブル関数(UDTF)
プロシージャと関数を含むデータベースまたはスキーマ
注釈
Streamlitオブジェクトにレベルを設定することはできません。代わりに、オブジェクトを含むデータベースまたはスキーマにレベルを設定します。
必要な権限を持っていることを確認する¶
オブジェクトにレベルを設定するには、以下に説明する権限が付与または継承されたロールを使用する必要があります。
オブジェクト権限の詳細については、 アクセス制御権限 をご参照ください。
変更するレベル |
設定するパラメーター |
必要な権限 |
---|---|---|
ログレベル |
|
|
メトリクスレベル |
|
|
トレースレベル |
|
以下の例のコードは、 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;
Snowsight でデータベースまたはスキーマにレベルを設定します。¶
Snowsight を使って、テレメトリレベルを設定することができます。開始する前に、 権限のあるロール にアクセスできることを確認してください。
レベル設定に必要な権限 を持つロールへのアクセス権限を持っていることを確認します。
Snowsight にサインインします。
ナビゲーションメニューで Monitoring » Traces and Logs を選択します。
Traces & Logs ページで、 Set Event Level を選択します。
Set logging & tracing for では、レベルを設定するデータベースとスキーマを選択します。
調整したいテレメトリデータのレベルを選択します。
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 を使用して、ロギング、メトリクス、トレースのレベルを設定できます。
オブジェクトのテレメトリレベルを設定するには、次を実行します。
レベル設定に必要な権限 を持つロールへのアクセス権限を持っていることを確認します。
ALTER <オブジェクト> コマンドを使用して、オブジェクトに LOG_LEVEL パラメーターを設定します。
使用できるレベルのリストについては、 ロギング、メトリクス、トレースのレベルを理解する をご参照ください。
たとえば、特定の UDF のログレベルを設定するには、 ALTER FUNCTION を使用してその UDF の LOG_LEVEL パラメーターを設定します。別の例として、データベース内のすべての関数とプロシージャのデフォルトのログレベルを設定するには、 ALTER DATABASE を使用してそのデータベースの LOG_LEVEL パラメーターを設定します。
次の例では、データベース
db
内のすべての関数とプロシージャのログレベルを ERROR に設定します。この例では、 UDFf1(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;
LOG LEVEL がさまざまなオブジェクトに設定されている場合に、Snowflakeが有効なログレベルを決定する方法の詳細については、 Snowflakeが有効レベルを決定する方法を理解する をご参照ください。
現在のセッションにおけるログレベルの設定¶
現在のセッションで行われた関数およびプロシージャの呼び出しのトレースレベルを設定するには。
オブジェクトにトレースレベルを設定する権限を持っていることを確認します。
設定するレベルに応じて、以下の権限を付与されたロールを使用する必要があります。
変更するレベル
設定するパラメーター
必要な権限
ログレベル
MODIFY SESSION LOG LEVEL
メトリクスレベル
MODIFY SESSION METRIC LEVEL
トレースレベル
MODIFY SESSION TRACE LEVEL
たとえば、現在のセッションのログレベルを設定する権限を
developer_debugging
ロールに付与するには、次のステートメントを実行します。GRANT MODIFY SESSION LOG LEVEL ON ACCOUNT TO ROLE developer_debugging;
ALTER SESSION コマンドを使用して、現在のセッションの LOG_LEVEL パラメーターを設定します。
例:
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
をオーバーライドします。