本文へ移動

n8n の workflow が止まった:schedule が静かになる理由

workflow はあり、最後の execution は成功、そこから先が何もない。エラーは存在しません。エラーを出す実行そのものが起きていないからです。気づきにくい障害ですが、どこを見るかが分かれば説明はつきます。

n8n ではこう見えます

execution の一覧が、ある日付でぷつりと終わっています。最新の実行は緑。workflow を開いても、完成して問題なく見えます。その workflow が supply していた先は、その日付から更新が止まっています。

  • 最後の execution が、schedule の間隔より何時間も、何日も古い。
  • workflow の Active が off になっている。または on でも最近の実行がない。
  • 同じ workflow の複製があり、有効なのは片方だけ。
  • 実行はされているが 1 時間ずれている。または想定した曜日に動いていない。

よくある原因

schedule が発火しないときの理由は、そう多くありません。

  • workflow が非アクティブになった

    編集中の保存、複製のインポート、検証のための切り替えで非アクティブのまま残ることがあります。手動実行は通るので健康に見えます。

  • schedule trigger の timezone のずれ

    instance の timezone、workflow の timezone、cron 式の 3 つが食い違っている。08:30 が別の地域の 08:30 になっていたり、DST の切り替わりで 1 日飛んだりします。

  • cron 式が意図と違う

    フィールドの位置がひとつずれている。あるいは曜日と日付の組み合わせが、ほとんど同時に成立しない条件になっている。

  • instance の再起動や移設

    コンテナの再起動、移設、メモリ不足による強制終了のあと、workflow が非アクティブで戻ることがあります。queue worker が処理しない状態で戻ることもあります。

  • webhook の呼び出し側が止まった

    webhook trigger の場合、こちら側には何も問題がありません。上流のシステムが URL を変えた、credential を失った、あるいは止められた、というだけです。

  • polling trigger の credential 失効

    credential を失効した poll trigger は、execution の一覧にエラーを残さずに実行が止まることがあります。

いまの n8n で確認する方法

5 分の確認で、ほとんどの場合は切り分けられます。

  1. Active を確認し、次に複製を探す

    workflow が有効かを確認します。そして、有効であるべき側を見ているかも確認します。workflow 名で検索して、よく似た兄弟がいないか見てください。

  2. trigger node と instance の timezone を突き合わせる

    cron 式と workflow 側の timezone 設定を、instance の timezone と並べて見ます。そのうえで、次の実行が自分のローカル時刻で何時になるかを出します。

  3. 最後の execution と間隔を比べる

    1 時間ごとの schedule で最新の実行が昨日なら、答えは出ています。失敗したのではなく、実行されていません。

  4. 手動で 1 回動かす

    手動実行が通るなら、処理の中身は問題ないと分かります。調べる先は workflow の本体ではなく trigger です。

  5. instance 自体を確認する

    実行が止まった日付の前後で、n8n のログやコンテナの状態を見ます。その時刻に再起動があれば、それで説明がつきます。

OutcomeGuard はどう検出するか

実行されていないことは、証拠が存在しないという形の障害です。だからこそ、何を期待すべきかを知っている道具が必要になります。

  • cron と interval の trigger を timezone 込みで解析し、次の実行がいつだったかを把握します。
  • 期限と猶予時間を過ぎても execution がなければ、想定時刻と実際の最終実行を根拠として MISSED_RUN を出します。
  • schedule が宣言されていない trigger は、観測した実行間隔を学習し、一定だったリズムが途切れた時点で気づきます。
  • workflow 定義をハッシュで見ているため、非アクティブ化や編集は CONFIG_DRIFT としてその時点で出ます。
  • instance 自体に到達できない場合は、workflow について推測せず UNKNOWN にします。

期限を過ぎている schedule を確認する

無料ヘルスチェックはすべての workflow の trigger と直近の実行を読み、動くはずで動いていない schedule を一覧にします。