Cron ジョブは静かに失敗します。サーバーの移動後にバックアップ スクリプトの実行が停止したり、パスワードのローテーションによって夜間のインポートが中断されたり、ディスクがいっぱいになって請求書ジョブが午前 3 時にクラッシュしたりする場合は、何もダウンしていないため、通常の稼働時間モニターは緑色のままで、バックアップが必要な場合や顧客から請求書がどこにあるか尋ねられた場合に初めてわかります。ハートビートモニタリングはそのギャップを埋めます。このガイドでは、その仕組みと、数分で無料でセットアップする方法を説明します。
心拍監視とは何ですか?
定期的な稼働時間モニターが Web サイトを外部からチェックします。ハートビート モニターは逆に機能します。つまり、スケジュールされたジョブがチェックインされます。一意の URL を取得すると、ジョブが終了するたびにその URL が呼び出されます。電話が時間通りに到着しない場合、モニターは何か問題が発生したことを認識し、警告を発します。
これにより、あらゆる種類のサイレント障害が一度に捕捉されます。
- 仕事は決して始まりませんでした。
crontabエントリが失われたか、スケジューラーを使用せずにサーバーが再起動されたか、コンテナーが交換されました。 - ジョブがクラッシュしました。エラーにより、スクリプトが最後に到達する前に停止しました。
- ジョブがハングアップします。開始されましたが、ロックされたデータベースまたは遅い API でスタックし、終了しません。
- サーバー全体がなくなってしまいました。サーバーや ping がないため、他に何も監視していなくても、その情報が聞こえます。
どのスケジュールされたタスクを監視する必要がありますか?
誰にも気付かれずに停止すると最もコストがかかる仕事から始めます。
- データベースとファイルのバックアップ。決して検証しないバックアップは、あなたが持っていない可能性のあるバックアップです。
- 請求および請求書発行のスクリプト、サブスクリプションの更新、および支払いの調整。
- データをショップ、CRM、倉庫、またはサプライヤー フィード間でインポートおよび同期します。
- スケジュールされたワーカーによって送信される電子メール キューとニュースレター。
- 自動 SSL 更新などの証明書更新ジョブ、およびディスクがいっぱいになるのを防ぐクリーンアップ ジョブ。
- スケジュールされた投稿を公開し、メンテナンス タスクを実行するWordPress またはアプリケーションcron 。
無料プランには 5 つのハートビート モニターが含まれており、一般的な中小企業や少数のクライアント サイトの重要なジョブをカバーするには十分です。
無料のcronジョブ監視を設定する方法
1. 無料アカウントを作成する
電子メール アドレスを使用してMy Site Alertsにサインアップします。クレジットカードもお試し期間もありません。
2. ハートビートを作成する
ダッシュボードで「ハートビート」を開き、「ハートビートの作成」を選択します。 「夜間データベースバックアップ」などの明確な名前を付けてください。これにより、何が失敗したかがアラートによって正確に通知されます。
3. 予想されるスケジュールと猶予期間を設定します
[ハートビートの期待間隔] に、ジョブを実行する頻度 (15 分ごと、1 時間ごと、1 日 1 回) を入力します。次に、ジョブの実行にかかるおおよその時間に安全マージンを加えた値に猶予期間を設定します。 2:00 に実行されるバックアップには通常 20 分かかりますが、約 30 ~ 40 分の猶予期間が必要です。そのため、夜遅くても誤警報がトリガーされることはありません。
4. ハートビート URL をコピーします
すべてのハートビートには独自の秘密 URL があります。ジョブは実行されるたびに GET または POST リクエストを送信します。ブラウザで URL を開いてテストすることもできます。ハートビートがアップに切り替わるはずです。
5. アラートの送信先を選択する
電子メールはすぐに使えます。 Slack 、 Discord 、 Telegram 、 Microsoft Teams 、または独自の Webhook にアラートを送信することもできるため、見逃したランが実際に見ている場所に届くようになります。
ジョブのハートビートを ping する方法
Linuxのcrontab
コマンドの後にリクエストを追加し、 &&で結合します。これにより、ジョブが成功した場合にのみ ping が送信されます。
0 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://mysitealerts.com/webhook-heartbeat/YOUR-CODE -m 10オプションは、ネットワークが遅い場合にcurl がハングするのを防ぎ、 --retry 3は短い接続の中断をカバーします。サーバーにcurlの代わりにwgetがある場合は、 wget -q -O /dev/nullの後にURLを指定すると、同じ機能が実行されます。
スクリプト内
実際の作業が完了した後、スクリプトの最後の行に ping を記述します。シェル スクリプトでは、先頭にset -eを追加して、失敗したコマンドが ping に到達する前にスクリプトを停止できるようにします。 Python、PHP、または Node.js では、ジョブの最終ステップとして、ハートビート URL に対して単純な HTTP リクエストを作成します。
コントロールパネルのホスティング
共有ホスティングでは、同じcurlコマンドをコントロールパネルのcronジョブの最後に追加します。ほとんどのパネルでは完全なコマンド ラインを貼り付けることができるため、同じ&&パターンがそこでも機能します。
ワードプレスのcron
WordPress は、誰かがサイトにアクセスしたときにのみ、スケジュールされたタスクを実行します。信頼性の高いスケジューリングを行うには、組み込みトリガーを無効にし、実サーバーcronジョブからwp-cron.phpを呼び出し、同じ行にハートビート ping を追加します。これで、スケジュールが起動したことと、スケジュールが完了したことの両方がわかりました。
誤報(または見逃し)を引き起こすよくある間違い
- ジョブの開始時に ping が鳴ります。それは仕事が始まったことを証明するだけです。作業が成功したら、最後に ping を実行します。
- 猶予期間が短すぎます。データが増えるとジョブが遅くなります。数か月ごとに猶予期間を確認してください。
- タイムゾーンを無視します。サーバーの時計とスケジュールが一致しない場合、毎日のジョブが 1 時間遅れているように見えることがあります。実測時間ではなく、予想される間隔を設定し、最初の実行でタイマーを開始させます。
- ping が多すぎます。ハートビートは、最大で 1 分に 1 回実行されるジョブ向けに設計されています。同じ 1 分以内の余分な ping は無視されます。
- ジョブ間で 1 つのハートビートを共有します。各ジョブには独自の URL が必要です。そうでないと、正常なジョブが停止した別のジョブを隠してしまいます。
- メンテナンス中の一時停止を忘れる。サーバーの移行中にハートビートを一時停止すると、履歴には実際のインシデントのみが表示されます。
ハートビートは稼働時間チェックの次に最適に機能します
ハートビートは、サイトの背後で作業が行われていることを示します。稼働時間チェックにより、訪問者がアクセスできることがわかります。一緒に両方の半分をカバーします。 Web サイトのチェックをまだ設定していない場合は、 Web サイトの稼働時間を無料で監視する方法に関するガイドに従い、その間に SSL とドメインの有効期限の監視を追加してください。 SSL チェッカーを使用して、あらゆる証明書を今すぐチェックできます。
最も重要なジョブを保護するには約 5 分かかります。無料のアカウントを作成し、バックアップ用のハートビートを 1 つ追加してください。そうする必要がないように、私たちが監視します。
よくある質問
cron監視と稼働時間監視の違いは何ですか?
稼働時間監視は、外部から URL をチェックして、サイトが応答するかどうかを確認します。 Cron またはハートビートの監視は、スケジュールされたジョブがチェックインされるのを待ち、ジョブが時間通りに到着しない場合は警告を発します。
心拍モニタリングは本当に無料ですか?
はい。無料プランには、電子メール、 Slack 、 Discord 、 Telegram 、 Microsoft Teams 、Webhook アラートを備えた 5 つのハートビート モニターが含まれています。クレジット カードも期限切れのトライアルもありません。
サーバーにエージェントをインストールする必要がありますか?
いいえ。ジョブは、たとえば、curl や wget を使用して、ハートビート URL に対して HTTP リクエストを 1 つ行うだけで済みます。これらはほぼすべてのサーバーで利用できます。
猶予期間はどれくらいの長さにすべきでしょうか?
ジョブの通常の実行時間に安全マージンを加えた時間に設定します。通常 10 分かかるジョブは、15 ~ 20 分の猶予期間があれば十分に対応できます。
1 日に 1 回または週に 1 回実行されるジョブを監視できますか?
はい。ジョブのスケジュールに予想される間隔 (1 日、7 日など) を設定すると、実行が失敗したときに警告が表示されます。