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