レック・テクノロジー・コンサルティング株式会社TECH BLOG

Azure Databricks のジョブ監視方法まとめ

Azure Databricks でジョブ実行を監視し、失敗した場合に通知する方法についてまとめました。
通知方法は主に以下の2通りです:

  • ログベースのアラート通知
  • ジョブ設定によるアラート通知

それぞれについて、以降で詳しく解説します。

ログベースのアラート通知

Log Analytics を利用し、5分毎にジョブの実行ログを確認して失敗した記録があればアラート通知を送信する方法です。

設定手順は以下の通りです。

1. アクショングループ作成

通知先となるアクショングループを作成します。

Azure ポータルで「モニター」を開き、「アクショングループ」をクリックします。

image.png

「作成」をクリックし、必要な設定を行います。

image-1.png

基本設定を入力したら「通知」タブに移動し、通知タイプと内容を設定します(今回はメールで通知したいため、「電子メール/SMS メッセージ/プッシュ/音声」で設定)。

image-2.png

内容を確認後、問題なければ「作成」をクリックします。

image-3.png

以上でアクショングループの作成は完了です。

2. Log Analytics ワークスペース作成

Databricks のログ格納場所となる Log Analytics ワークスペースを作成します。

3. アラート設定

対象のワークスペースを開き、「ログ」で以下のクエリを実行します。

DatabricksJobs
| where ActionName contains "Failed" and TimeGenerated > ago(5m)

上記はジョブ実行履歴のうち失敗(Failed)となったもので、5分以内のログを検索するクエリです。

image-5.png

一度実行したら、「新しいアラートルール」をクリックします。

image-6.png

検索クエリが先ほど実行したものと合っていることを確認します。

測定はクエリに関する設定で、以下のように設定します。

  • メジャー:テーブルの行
  • 集計の種類:カウント
  • 集計の粒度:5分

image-7.png

アラートロジックは以下の通り設定します。

  • 演算子:次の値より大きい
  • しきい値:0
  • 評価の頻度:5分

上記設定によりクエリが5分ごとに実行され、5分の間に実行結果が1件でもあればアラート通知が送られます。

image-8.png

アクションには設定したアクショングループを指定します。

image-9.png

「詳細」で以下の項目を設定します。

  • サブスクリプション:対象のサブスクリプション
  • リソースグループ:対象のリソースグループ
  • 重大度:通知の重要度。今回はエラーとする。
  • アラートルール名:通知の際に表示されるアラートルール名
  • リージョン:アラートルールのリージョン

image-10.png

「確認および作成」をクリックし、問題がなければ「作成」をクリックします。
以上でアラートの設定は完了です。

上記の設定後にジョブ実行が失敗した場合、以下のような通知メールが送信されます。

image-11.png

ジョブ設定によるアラート通知

Databricks で、ジョブごとにアラート設定を行うことも可能です。

image-12.png

ジョブ作成画面の「ジョブ通知」で、「通知を編集」をクリックします。

image-13.png

ポップアップで「通知を追加」をクリックし、配信先を設定することができます。配信先はメールアドレスに加えてWebhook、Slack、Teamsなどが選べます。

設定後にジョブ実行が失敗した場合、以下のような通知メールが送信されます。

image-14.png

「View run in Databricks」のリンクから該当ジョブの実行結果詳細を確認可能です。

補足

Databricks のシステムテーブルsystem.lakeflow.job_run_timelineにもジョブの実行履歴は記録されますが、診断ログに比べて反映のタイミングが遅いです。

実際に試した結果は以下の通りで、診断ログはジョブ失敗から6分後には反映されてメール通知されたのに対し、システムテーブルに反映されたのはジョブ失敗から約20分後です。

イベント 時刻
ジョブ失敗 13:48
診断ログ反映  13:54
メール通知 13:55
システムテーブル反映 14:07

システムテーブルに対して定期的にクエリをかけ、ジョブが失敗した記録があれば通知・・・という方法も検討しましたが、コストの観点からも、システムテーブルより診断ログを利用した方法のほうが良さそうです。

参考

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る