Digdagのスケジューリングについて理解する #digdag

treasure-data-logo

Digdagを理解してみるシリーズ、3本目は『スケジューリング』です。

スケジュール設定

ワークフローを定期的に実行させるために、schedule: オプションをワークフローのTOPレベルに定義する事が出来ます。

timezone: UTC

schedule:
  daily>: 07:00:00

+step1:
  sh>: tasks/shell_sample.sh

schedule:ディレクティブでは、以下オプションの中から1つを選択可能です。

  • daily>: HH:MM:SS (daily>: 07:00:00)
  • hourly>: MM:SS (hourly>: 30:00)
  • weekly>: DDD,HH:MM:SS (weekly>: Sun,09:00:00)
  • monthly>: D,HH:MM:SS (monthly>: 1,09:00:00)
  • minutes_interval>: M (minutes_interval>: 30)
  • cron>: CRON (cron>: 42 4 1 * *)

digdag checkコマンドを使うと、次にいつそのタスクが実行されるかが分かります。

  $ ./digdag check
  ...

  Schedules (1 entries):
    daily_job:
      daily>: "07:00:00"
      first session time: 2016-02-10 16:00:00 -0800
      first runs at: 2016-02-10 23:00:00 -0800 (11h 16m 32s later)

スケジューラ起動

digdag schedulerコマンドを使うとスケジュール起動させる事が出来ます。

$ ./digdag scheduler

ワークフロー定義を変更すると、スケジューラは自動的にdigdag.digファイルを再度読み込むので再起動する必要はありません。

スケジューリングステータスを確認

Client-mode commandsを利用してスケジュールの管理を行う事が出来ます。

注:
スケジューラーコマンドはデフォルトではhttp://127.0.0.1:65432でのみ受け付けています。接続はhttp://127.0.0.1 (localhot)からのみ受け付けています。これはセキュリティ上の理由によるものです。この部分の変更を行う場合は--bind ADDRESSオプションを使用します。

処理が期待する時間内に終わらなかった場合のアラート設定

以下の様な形で設定を行う事で可能となります。

timezone: UTC

schedule:
  daily>: 07:00:00

sla:
  # triggers this task at 02:00
  time: 02:00
  +notice:
    sh>: notice.sh

+long_running_job:
  sh>: long_running_job.sh

まとめ

という訳で、Digdagのスケジューリングに関する内容のご紹介でした。ジョブ管理の肝となる機能である『スケジューラ』機能、Digdagも様々な設定方法が選べる様ですが、そもそもサーバー起動はどうするんだろう?設定の追加は?設定した内容が一覧で見れたりするのかな?という部分が疑問として沸き上がって来ました。今後のエントリではその辺りについても調査・言及して行ければと思っております。こちらからは以上です。

参考情報

AWS Cloud Roadshow 2017 福岡