オートメーションのトラブルシューティング
スケジューラーおよび配信に関する問題には、このページを使用してください(cron + heartbeat)。
コマンドラダー
Cron が起動しない
cron statusが有効で、将来のnextWakeAtMsが報告されている。- ジョブが有効で、有効なスケジュール/タイムゾーンを持っている。
cron runsにok、または明示的なスキップ理由が表示されている。
cron: scheduler disabled; jobs will not run automatically→ 設定/環境変数で cron が無効。cron: timer tick failed→ スケジューラーのティックがクラッシュ。周辺のスタック/ログコンテキストを確認してください。- 実行出力に
reason: not-due→--forceなしで手動実行が呼ばれ、ジョブがまだ実行時刻に達していない。
Cron は起動したが配信されない
- 実行ステータスが
ok。 - 分離ジョブ向けに配信モード/ターゲットが設定されている。
- チャンネルプローブがターゲットチャンネルの接続を報告している。
- 実行は成功したが、配信モードが
none→ 外部メッセージは期待されない。 - 配信ターゲットが欠落/無効(
channel/to)→ 内部的には成功しても、外部送信はスキップされる場合がある。 - チャンネル認証エラー(
unauthorized、missing_scope、Forbidden)→ チャンネルの資格情報/権限により配信がブロックされている。
Heartbeat が抑制またはスキップされる
- Heartbeat が有効で、ゼロ以外の間隔が設定されている。
- 最後の Heartbeat の結果が
ran(またはスキップ理由が理解できる)。
heartbeat skippedとreason=quiet-hours→activeHoursの外。requests-in-flight→ メインレーンがビジーで、Heartbeat が延期された。empty-heartbeat-file→HEARTBEAT.mdは存在するが、実行可能な内容がない。alerts-disabled→ 可視性設定により、外向きの Heartbeat メッセージが抑制されている。
タイムゾーンと activeHours の落とし穴
Config path not found: agents.defaults.userTimezoneはキーが未設定であることを意味し、Heartbeat はホストのタイムゾーン(または設定されていればactiveHours.timezone)にフォールバックします。--tzのない Cron は、ゲートウェイ ホストのタイムゾーンを使用します。- Heartbeat の
activeHoursは、設定されたタイムゾーン解決(user、local、または明示的な IANA tz)を使用します。 - タイムゾーンなしの ISO タイムスタンプは、Cron の
atスケジュールでは UTC として扱われます。
- ホストのタイムゾーン変更後、ジョブが誤った実時間で実行される。
activeHours.timezoneが誤っているため、日中は常に Heartbeat がスキップされる。