digdag scheduleのdisable状態を検知するワークフロー
概要
digdag scheduleで定期的にWFを実行していたが、 意図せずに、scheduleの状態がdisableとなり 定期実行が停止してしまうことがあった、またその状態に気づかなかった。
そこで、停止の状態を検知するWFを定期的に実行するようにした。
何を検知するか・・・
digdag uiの下記のURLのwfページに http://digdag.server/workflows/xxx 「pauseボタン」がある。 これを押すと、scheduleの定期実行が停止されてしまった(disableとなった)。
この状態の検知は、
digdag schedules
を使えば良さそう。
結果にのdisabled at
に
停止されていないときは、値が空、
停止されたときは、日時が入った。
$ digdag schedules
・・・・・
id: 1
project: project_name
workflow: wf_name
disabled at:
next session time: 2018-01-12 00:00:00 +0900
next scheduled to run at: 2018-01-12 09:00:00 +0900 (in 16h 50m 38s)
・・・・・
・・・・・
id: 2
project: project_name
workflow: wf_name
disabled at: 2018-01-11 17:50:17 +0900 (-3s ago)
next session time: 2018-01-12 00:00:00 +0900
next scheduled to run at: 2018-01-12 09:00:00 +0900 (in 16h 50m 38s)
・・・・・
仕込んだワークフロー
以下のような ワークフローを定期実行し、
disable
となっているWFがある場合に通知を送るようにした。
(check.dig)
timezone: "Asia/Tokyo"
schedule:
daily>: hh:mm:ii
+Check-disabled-wf:
sh>: ./digdag_check_disabled_wf.sh
_error:
call>: (slackなどに通知)
(digdag_check_disabled_wf.sh)
#!/bin/sh
disabledWFCount=`digdag schedules | egrep "disabled at: \S" | wc -l`
if [ ${disabledWFCount} -gt 0 ]; then
exit 1
fi
exit 0