本文へ移動

n8n のワークフローが止まった:スケジュールが静かになる理由

ワークフローはあり、最後の実行は成功、そこから先が何もない。エラーは存在しません。エラーを出す実行そのものが起きていないからです。気づきにくい障害ですが、見る場所さえ分かれば原因は突き止められます。

n8n ではこう見えます

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

  • 最後の実行が、スケジュールの間隔より何時間も、何日も古い。
  • ワークフローの Active がオフになっている。オンなのに最近の実行がない場合もある。
  • 同じワークフローの複製があり、有効なのは片方だけ。
  • 実行はされているが 1 時間ずれている。または想定した曜日に動いていない。

よくある原因

スケジュールが発火しないときの理由は、そう多くありません。

  • ワークフローが非アクティブになった

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

  • スケジュールトリガーのタイムゾーンのずれ

    インスタンスのタイムゾーン、ワークフローのタイムゾーン、cron 式の 3 つが食い違っている。08:30 が別の地域の 08:30 になっていたり、夏時間の切り替わりで 1 日飛んだりします。

  • cron 式が意図と違う

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

  • インスタンスの再起動や移設

    コンテナの再起動、移設、メモリ不足による強制終了のあと、ワークフローが非アクティブで戻ることがあります。queue モードの worker が実行を拾わない状態で戻ることもあります。

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

    webhook トリガーの場合、n8n 側には何も問題がないことがあります。呼び出す側のシステムが URL を変えた、認証情報を失った、あるいは停止した、というだけのケースです。

  • ポーリングトリガーの認証情報の失効

    認証情報が失効したポーリングトリガーは、実行の一覧にエラーを残さないまま止まることがあります。

いまの n8n で確認する方法

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

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

    ワークフローが有効かを確認します。そして、有効であるべき側を見ているかも確認します。ワークフロー名で検索して、よく似た複製がないか見てください。

  2. トリガーノードとインスタンスのタイムゾーンを突き合わせる

    cron 式とワークフロー側のタイムゾーン設定を、インスタンスのタイムゾーンと並べて見ます。そのうえで、次の実行が日本時間で何時になるかを計算します。

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

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

  4. 手動で 1 回動かす

    手動実行が通るなら、処理の中身は問題ないと分かります。調べる先はワークフローの本体ではなくトリガーです。

  5. インスタンス自体を確認する

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

OutcomeGuard はどう検出するか

実行されなかったことは、記録が何も残らない障害です。見つけるには、いつ実行されるはずだったかを知っている仕組みが要ります。

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

期限を過ぎているスケジュールを確認する

無料スキャンは、すべてのワークフローのトリガーと直近の実行を読み、動くはずなのに動いていないスケジュールを一覧にします。