Snowflake Trailとは?パイプライン監視を初心者向けに解説

Snowflake Trailとは?パイプライン監視を初心者向けに解説のサムネイル Snowflake
この記事をシェアする𝕏B!FacebookLINEPocket

はじめに:Snowflake Trailって何者?

Snowflakeでパイプラインを組んでいると、「タスクがいつの間にか止まっていた」「Snowparkで書いたUDFがなぜか遅い」など、中身が見えなくて困ること、ありますよね。そんなときに頼れるのが Snowflake Trail です。

Snowflake Trailは、データパイプラインや関数の動きを「見える化」してくれるオブザーバビリティ機能のまとまりです。オブザーバビリティ(可観測性)とは、システム内部で何が起きているかを外から観察できるようにする考え方のこと。Trailを使えば、Snowflake内で動くコードに対してログ・メトリクス・トレースをまるっと収集できます。

Snowflake Trailがログ・メトリクス・トレースの3つのシグナルでパイプラインや関数の動きを可視化するオブザーバビリティ機能の全体像を示す概念図

Snowflake Trailの3つの柱

Trailで集められるシグナル(信号)は大きく3種類あります。

1. ログ (Logs)

コード内で logger.info(...) のように出力したテキストメッセージのことです。「ここまで処理が進んだ」「想定外の値が来た」など、開発者がデバッグのために残すメモのようなものですね。

2. メトリクス (Metrics)

処理時間、件数、メモリ使用量など、数値で測れる指標です。グラフで時系列に追いかけると、「最近じわじわ遅くなっている」といった傾向が見えてきます。

3. トレース (Traces)

「処理Aの中で処理Bが呼ばれ、その中でクエリCが走った」という処理の親子関係や時間軸を可視化したものです。OpenTelemetry準拠なので、外部ツールとも連携しやすい点がポイントです。

シグナルはどこに溜まる?Event Tableの役割

収集されたシグナルは、すべて Event Table という専用のテーブルに保存されます。まずはイベントテーブルを作って、アカウントに紐付けるところから始めます。

-- イベントテーブルの作成
CREATE EVENT TABLE my_events;

-- アカウント全体のイベント送信先に設定
ALTER ACCOUNT SET EVENT_TABLE = my_db.public.my_events;

-- ログレベルを INFO に設定
ALTER ACCOUNT SET LOG_LEVEL = INFO;
ALTER ACCOUNT SET TRACE_LEVEL = ON_EVENT;

これで、UDFやストアドプロシージャ、タスクから出力されるログ・トレースが my_events に流れ込みます。あとは普通のテーブルと同じようにSQLで分析できるのが便利なところです。

SnowsightのTraces & Logsで眺めてみよう

テーブルを直接SELECTしても良いのですが、Snowsightの「Monitoring → Traces & Logs」画面を使うと、グラフやタイムラインで直感的にチェックできます。失敗したタスク実行をクリックすれば、どのステップでエラーが起きたかをツリー表示で追いかけられます。

SnowsightのMonitoring画面「Traces & Logs」でタスク実行の失敗ステップを時系列とツリー表示で追跡できるTrailのモニタリングUIのイメージ

Snowparkコードからログを出す例

Snowpark Pythonの中では、Pythonの logging モジュールがそのまま使えます。

import logging
logger = logging.getLogger("my_pipeline")

def transform(session, table_name):
    logger.info(f"処理開始: {table_name}")
    df = session.table(table_name)
    logger.info(f"件数: {df.count()}")
    return df

このログは自動的にEvent Tableに送られ、後からSQLでも検索できます。エラー時には logger.error を使えば、Snowsight上で赤く目立つので原因追跡もスムーズです。

こんなシーンで役立ちます

注意点:コストとログレベル

Event Tableはストレージとして課金対象になります。LOG_LEVELDEBUG にすると大量のログが流れ込むので、本番では INFOWARN に絞るのがおすすめです。古いイベントは定期的に削除するか、保持期間を決めて運用しましょう。

まとめ

Snowflake Trailは、パイプラインや関数の「中身の動き」を見えるようにする頼れる相棒です。Event Tableを1つ用意するだけで、ログ・メトリクス・トレースをまとめて収集でき、Snowsightから直感的に確認できます。まずは小さなタスクやSnowpark関数に logger.info を仕込むところから始めて、徐々に観測対象を広げてみてくださいね。

参考リンク

関連記事

この記事をシェアする𝕏B!FacebookLINEPocket