Heartbeat
Cronとバックグラウンドジョブのモニタリング
逆に、ジョブがこちらに通知します。
用途
他のすべては確認しに行きますが、これは待機します。バックアップ、夜間のインポート、キューワーカーが終了時にURLを呼び出し、通知が届かない場合にアラートを送ります。
チェックするアドレスがないものをモニタリングする唯一の方法です。3週間前に停止したバックアップジョブは、外部から見ると完全に動作しているものと全く同じに見えますが、バックアップが必要な日まで気づきません。
設定できる内容
以下のすべては、どのプランでも追加時のフォームに含まれています。
- 実行頻度
- こちらが確認する頻度ではなく、ジョブが通知するべき頻度です。週次バックアップは一般的なものなので、他のチェックが1日で止まるところを、これは1か月まで対応します。
- 許容遅延
- 通知が遅れても許容される分数です。1時間ごとに実行され、最大20分かかるジョブは30分まで許容できます。空欄の場合、期間の10分の1が適用されます。
- Ping URL
- モニター作成時に生成され、一度だけ表示されます。ジョブの終了時に呼び出してください。再生成可能で、古いものは無効になります。
質問
これはデッドマンズスイッチと同じですか?
まさにその通りで、Cronジョブモニタリングに適用されています。このサイトの他のすべては何かを確認しに行きますが、これは通知を待ち、沈黙に対してアラートを送ります。チェックするアドレスや読むべきページがないジョブを監視する唯一の方法です。
アラートが送られるまで、ジョブはどれくらい遅れても大丈夫ですか?
許容される遅延時間(分単位)です。1時間ごとに実行され、1分から20分かかるジョブは30分まで許容されます。そのため、最後の通知から60分から90分の間に通知が期待されます。空欄の場合、実行期間の10分の1が適用され、1分未満にはなりません。夜間バックアップにとって2分の遅延は問題ありませんが、5分ごとに実行されるジョブにとっては重要です。Cronジョブが数秒の誤差で実行されるのは通常のことなので、これが原因でインシデントが発生しないようにしています。
Cronジョブやシェルスクリプトからどのように呼び出しますか?
ジョブの終了時に、curlやwget、その他HTTPを扱えるツールでURLを取得してください。GET、POST、HEADのいずれも受け付けます。世界の半分が1つを選び、もう半分が別のものを選ぶためです。応答は空の204で、夜間ジョブがオペレーターにHTMLページをメールしないようにしています。
開始時と終了時のどちらで呼び出すべきですか?
終了時、作業が成功した後に呼び出してください。開始前に呼び出すと、マシンが起動したことを示すだけで、問題が発生するのは稀です。スクリプトの最後の行に配置し、既存の終了コードチェックの後ろに置いてください。そうすれば、沈黙はホストがダウンしたのではなく、ジョブが失敗したことを意味します。
URLが漏洩した場合はどうなりますか?
URLは認証情報です。そのため、256ビットのランダム性があり、一度だけ表示されます。これを持っている人は誰でもジョブを正常と報告できます。これは、誰かが何かを読むことよりも懸念すべき失敗です。再生成すると、古いものは即座に無効になります。
週次で実行されるジョブでも使用できますか?
はい、それが良い理由の1つです。この間隔は1か月まで対応し、他のチェックタイプが1日で止まるところをカバーします。週次バックアップは一般的なものであり、3週間前に静かに停止したバックアップは、完全に動作していたものと見た目が同じで、必要な日まで気づかれません。
ジョブが失敗したときにメールを送るようにしないのはなぜですか?
知る必要がある失敗は、ジョブが全く実行されなかった場合です。実行されなかったジョブはメールを送信しません。これには、スクリプト内のクラッシュ、マシンの再起動、コメントアウトされたCronエントリ、起動しなかったコンテナ、停止したキューが含まれます。ジョブ内のエラーを検出することも依然として重要ですが、それは沈黙とは異なる種類の失敗です。