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 分の確認で、ほとんどの場合は切り分けられます。
Active を確認し、次に複製を探す
workflow が有効かを確認します。そして、有効であるべき側を見ているかも確認します。workflow 名で検索して、よく似た兄弟がいないか見てください。
trigger node と instance の timezone を突き合わせる
cron 式と workflow 側の timezone 設定を、instance の timezone と並べて見ます。そのうえで、次の実行が自分のローカル時刻で何時になるかを出します。
最後の execution と間隔を比べる
1 時間ごとの schedule で最新の実行が昨日なら、答えは出ています。失敗したのではなく、実行されていません。
手動で 1 回動かす
手動実行が通るなら、処理の中身は問題ないと分かります。調べる先は workflow の本体ではなく trigger です。
instance 自体を確認する
実行が止まった日付の前後で、n8n のログやコンテナの状態を見ます。その時刻に再起動があれば、それで説明がつきます。
OutcomeGuard はどう検出するか
実行されていないことは、証拠が存在しないという形の障害です。だからこそ、何を期待すべきかを知っている道具が必要になります。
- cron と interval の trigger を timezone 込みで解析し、次の実行がいつだったかを把握します。
- 期限と猶予時間を過ぎても execution がなければ、想定時刻と実際の最終実行を根拠として MISSED_RUN を出します。
- schedule が宣言されていない trigger は、観測した実行間隔を学習し、一定だったリズムが途切れた時点で気づきます。
- workflow 定義をハッシュで見ているため、非アクティブ化や編集は CONFIG_DRIFT としてその時点で出ます。
- instance 自体に到達できない場合は、workflow について推測せず UNKNOWN にします。
期限を過ぎている schedule を確認する
無料ヘルスチェックはすべての workflow の trigger と直近の実行を読み、動くはずで動いていない schedule を一覧にします。