
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
ほとんどの監視は「起きたこと」を見ます。あなたが必要としていたのは「起きなかったこと」を見るものでした。2 つの cron エントリ、片方は鼓動し、もう片方は鼓動の不在に耳をすませます。そして、ビーチにいるあなたを見つけ出すページです。
2 つの cron エントリ · 新規サービスなし · 何も起きないときアラートがあなたを見つけます
既存のジョブはそのまま動き続けます。完了後に curl を 1 行追加し、通知エンドポイントへハートビート行を送信します。2 つ目の cron エントリは独自の間隔で動き、無音を確認します。新しいビートがなければ、あなたのスマホへページします。ジョブの成功は静かです。その不在は大音量です。
/users/root/entries への POST が 2 件、いずれも 5 フィールドの式です。1 つ目は各スケジュールジョブの後にハートビートを送信。2 つ目は独自の間隔で動き、通知エンドポイントに最後のビートが新鮮かを問い合わせ、必要ならページを発火させます。キューもエージェントもデーモンも不要、もとから存在すべき crontab 行が 2 つあるだけです。
ほとんどの監視ツールは成功経路を見ています。何かが起きたときに知らせてくれます。この形は、何も起きないときにアラートを発します。それこそ、静かなジョブが常に取り逃がすケースです。
ワーカープロセスが起動しなかった場合、再起動された、スクリプトが消えた、クォータが切れたといった状況では、ログも残らずアラートのきっかけもありません。監視 cron はそれでも動き続け、ハートビート行が古くなっていることに気づきます。静かなクラッシュを捕まえる仕掛けは、まさに「静かなもの」に依存しない仕掛けです。
監視は crontab に 1 行追加するだけで、Healthchecks.io アカウントや CloudWatch アラームではありません。作業と同じコンテナに紐付き、必要なら `expires_at` で消滅し、スタックの他の部分が既に使っている同じ通知 API から読み取ります。
通知エンドポイントは、プッシュ、SMS、メールへページを展開します。すでに信頼しているチャネル群です。ダッシュボードは見守らなくてかまいません。ダッシュボードが自分自身を見守り、沈黙が長く続いたときだけバリ島のビーチにいるあなたを見つけます。
仕組みはそのままの Hoody Cron と Hoody Notifications です。数字はデモランタイムからではなく、ドキュメント化された API 表面に基づきます。
標準の 5 フィールド式に加えてマクロ `@hourly`、`@daily`、`@weekly`、`@monthly`、`@yearly` をサポートします。監視側とワーカー側はまったく異なる間隔を持てます。
管理エントリは `expires_at` をサポートしているので、たとえば 1 週間限定の移行ウィンドウのような一時的なハートビートは自動で片付きます。作業と一緒に監視も消えます。
各コンテナは独自の crontab を持ちます。あるテナントのハートビートが別テナントの監視を黙らせることはなく、ジョブを無効化するのは PATCH `enabled: false` の 1 回だけです。
Hoody Cron API の仕様: 5 フィールド式に加えて `@hourly`/`@daily`/`@weekly`/`@monthly`/`@yearly` マクロ、管理エントリにオプションの `expires_at`、ユーザーごとの crontab 分離、PATCH での有効/無効切替に対応しています。
沈黙がアラートになります。
ページング付きの cron 監視を求めたときに、つい手を伸ばしてしまう定番ツール群です。それぞれ別アカウント、別請求、別 API です。crontab 2 行と通知エンドポイントが、同じ仕事をします。
成功経路を見るのはやめましょう。成功の不在を見るのです。静かな失敗が住んでいるのは、そこだけです。