Serverless LogsをUnity Catalogボリュームに配信する
Serverless Logs 配信は、Serverless ジョブからのアプリケーション Logs を Unity Catalog ボリュームに書き込みます。チームが Logs を保持し、可観測性ツールで処理できるように、ワークスペース管理者がワークスペースの宛先を構成します。Logs はジョブの完了後に非同期的に配信されます。配信には数分かかる場合があり、処理時間と upload 時間によって異なります。
ベータ版
この機能はベータ版です。使用するには、ワークスペース管理者が [プレビュー] ページから [Serverless Logs を Unity Catalog ボリュームに配信] を有効にする必要があります。Databricksのプレビューを管理するを参照してください。
要件
- Serverless コンピュートと Unity Catalog が有効になっているワークスペース。
- Serverless 環境バージョン 5以降。
- ログ配信を構成するワークスペース管理者ロール。ユーザーにワークスペース管理者ロールを割り当てるを参照してください。
- Unity Catalog ボリュームへのServerless Logs配信 プレビューがワークスペースで有効になっています。すでに有効になっている可能性があります。無効になっている場合は、ワークスペース管理者が プレビュー ページで有効にできます。プレビューを有効にすると構成は利用可能になりますが、配信は起動されません。
- 送信先ボリューム。配信を構成する管理者は、カタログで
USE CATALOG、スキーマでUSE SCHEMA、ボリュームでREAD VOLUMEおよびWRITE VOLUMEが必要です。Unity Catalog ボリュームの権限を参照してください。
アクセス制限された信頼できるボリュームにのみ配信するように構成します。配信された Logs には、ユーザーのEメール、ストレージパス、スタックトレース、内部識別子、一時的な署名付きURLなど、機密情報が含まれる場合があります。Logs に機密情報が含まれないことは保証されません。
宛先にアクセスできるユーザーは、他のユーザーのジョブのLogsを含め、配信されたLogsを読み取ることができます。ボリュームへのアクセスをそれに応じて制限します。
ログ配信の有効化
ワークスペース管理者は、ワークスペースのLogs配信を有効にする必要があります。
- ユーザーメニューから 設定 を開きます。
- ワークスペース管理 で コンピュート をクリックします。
- ログ配信 セクションで、 Serverless ログ配信 をオンにします。
- ログ配信の構成 で、
/Volumes/observability/production/serverless_logsなどの ボリュームパス を入力するか、フォルダアイコンをクリックしてボリュームを参照します。 - 保存 をクリックします。宛先を保存すると配信が有効になります。
この設定はワークスペースレベルで適用されます。各ジョブを個別に構成する必要はありません。
配信されたLogsを読み取る
アプリケーションの出力には、ユーザー定義関数(UDF)を含むユーザーコードからの標準出力および標準エラーが含まれます。カタログエクスプローラーを使用して、宛先ボリュームを参照し、配信されたファイルを確認します。Unity Catalog ボリューム内のファイルを操作するを参照してください。
ログ配信はクラスターメトリクスやクエリープロファイルを提供しません。ジョブランページを使用して、アプリケーションLogsと一緒にランステータスとパフォーマンスを調査します。Lakeflow Jobsの監視を参照してください。
SQL で配信されたLogsをクエリーする
配信されたテキストファイルをクエリーするには read_files を使用します。この例のボリュームパスを送信先に置き換えます。Logsを読み取るには、カタログに対するUSE CATALOG、スキーマに対するUSE SCHEMA、ボリュームに対するREAD VOLUMEが必要です。
ファイルパスからジョブとランの識別子を抽出し、ログ出力の各行を保持する一時的なビューを作成します。
CREATE OR REPLACE TEMPORARY VIEW serverless_job_logs AS
SELECT
regexp_extract(_metadata.file_path, '/job_id=([^/]+)/', 1) AS job_id,
regexp_extract(_metadata.file_path, '/job_run_id=([^/]+)/', 1) AS job_run_id,
regexp_extract(_metadata.file_path, '/task_run_id=([^/]+)/', 1) AS task_run_id,
_metadata.file_name AS file_name,
value AS log_line
FROM read_files(
'/Volumes/observability/production/serverless_logs/',
format => 'text'
);
ジョブのラン全体でエラーを含む行を見つける:
SELECT job_id, job_run_id, task_run_id, file_name, log_line
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%';
エラー行が最も多いジョブを特定する:
SELECT
job_id,
count(*) AS error_lines,
count(DISTINCT job_run_id) AS affected_runs
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%'
GROUP BY job_id
ORDER BY error_lines DESC;
これらのクエリーは、リテラルテキスト ERROR を検索します。アプリケーションのログ形式に合わせてフィルターを調整します。read_filesテーブル値関数を参照してください。
転送先の変更または配信の無効化
転送先を変更するには、 設定 > コンピュート > Log 配信 を開き、ボリューム名の横にある鉛筆アイコンをクリックし、新しいパスを入力または参照し、 保存 をクリックします。転送先を保存すると、配信が無効になっている場合を含め、配信が有効になります。
配信を無効にするには、 設定 > コンピュート > Log 配信 を開き、 Serverless Log 配信 をオフにします。この設定では宛先が保持されるため、別のボリュームを選択せずに配信を再度有効にすることができます。配信を無効にしても、ボリュームに既に書き込まれているファイルは削除されません。これらのファイルのアクセス権と保持期間は個別に管理してください。
欠落している Logs のトラブルシューティング
ジョブの完了後にLogsが表示されない場合:
- 設定 > コンピュート > Logs 配信 で Serverless Logs 配信 が有効になっていることを確認します。プレビューを有効にしただけでは配信は起動されません。
- 設定したボリュームが存在し、配信を設定した管理者が必要な権限を保持していることを確認します。
- ジョブがServerlessコンピュートを使用してアプリケーション出力を生成することを確認します。非同期配信のために、ジョブ完了後数分待ちます。処理時間とupload時間により、配信が遅れる可能性があります。
クラシックコンピュートログの配信については、コンピュートログの配信を参照してください。