1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

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

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

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

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

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

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

通知先となるアクショングループを作成します。
Azure ポータルで「モニター」を開き、「アクショングループ」をクリックします。
image.png

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

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

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

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

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

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

3. アラート設定

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

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

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

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

image.png

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

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

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

image.png

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

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

上記設定によりクエリが5分ごとに実行され、5分の間に実行結果が1件でもあればアラート通知が送られます。
image.png
アクションには設定したアクショングループを指定します。

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

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

image.png

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

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

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

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

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

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

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

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

補足

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

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

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

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

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?