ロギング、トレース、メトリクス

ログメッセージをキャプチャし、コードの実行時にイベントをトレースすることで、Snowflake関数とプロシージャハンドラーコード(Snowpark APIs を使用 して記述したコードを含む)のアクティビティを記録できます。データを収集したら、 SQL を使用してクエリを実行し、結果を分析できます。

ロギング、トレース、メトリクスは、アプリケーションのデバッグと最適化を容易にするためにSnowflakeが提供する可観測性機能の1つです。Snowflakeは、 OpenTelemetry 標準に基づいた構造で可観測性データをキャプチャします。

特に、次を記録して分析できます。

  • ログメッセージ は、コードの特定部分の状態に関する情報を含む、独立した詳細なメッセージです。

  • メトリクス・データ --- Snowflake が生成する CPU とメモリ・メトリクス。

  • 構造化データを使用した トレースイベント は、コードの複数の部分にまたがる情報やグループ化された情報を取得するために使用できます。

始めましょう

次の高レベルのステップを使用して、ログデータとトレースデータの取得と使用を開始します。

  1. アクティブなイベントテーブルがあることを確認してください。次のいずれかを実行します。

    Snowflakeは、コードからのテレメトリーデータをイベントテーブルに収集します。

  2. データが収集されるように、テレメトリーレベル を設定します。

    レベルを使えば、どのデータを(どれだけのデータを)収集するかを指定できます。レベルが正しく設定されていることを確認します。

  3. ハンドラーコードからログまたはトレースデータの出力を開始します。

    イベントテーブルを作成し、アカウントに関連付けたら、ハンドラーの言語で API を使用して、ハンドラーコードからログメッセージを出力します。ログおよびトレースデータをキャプチャした後、データをクエリして結果を分析できます。

    コードのインスツルメンテーションの詳細については、次をご参照ください:

  4. イベントテーブルをクエリして、収集されたログとトレースデータを分析します。

    詳細については、次をご参照ください。

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

イベント・テーブルに保存されるテレメトリ・データ(ログ、トレース、メトリクス・データなど)のレベルは、データの種類ごとに設定することで管理できます。レベル設定を使用して、必要な量と種類のデータを確実にキャプチャします。

詳細については、 ロギング、メトリクス、トレースのレベル設定 をご参照ください。

ログメッセージとトレースイベントを比較する

次のテーブルでは、ログメッセージとトレースイベントの特徴と利点を比較しています。

特徴

ログエントリ

トレースイベント

使用目的

コードの状態に関して、詳細であっても構造化されていない情報を記録します。この情報を使用して、関数またはプロシージャの特定の呼び出し中に何が起こったかを理解します。

コードの各呼び出しの、簡潔であっても構造化された概要を記録します。この情報を集約して、コードの動作を高レベルで理解します。

ペイロードとしての構造

なし。ログエントリは単なる文字列です。

トレースイベントに付加できる属性で構造化されています。属性は、 SQL クエリで簡単にクエリできるキーと値のペアです。

グループ化のサポート

なし。各ログエントリは独立したイベントです。

あり。トレースイベントはスパンに編成されます。スパンは独自の属性を持つことができます。

数量制限

無制限。コードによって出力されたすべてのログエントリは、イベントテーブルにインジェストされます。

スパンあたりのトレースイベント数の上限は128です。スパン属性の数にも制限があります。

記録されたデータに対するクエリの複雑性

比較的高い。クエリでは各ログエントリを解析して、そこから意味のある情報を抽出する必要があります。

比較的低い。クエリでは、トレースイベントの構造化された性質を利用できます。