規模で健康チェックを管理する


15Fiveでは、他の多くの企業と同様に、我々は定期的に発生するジョブをスケジュールするためにcronを使用します.ジョブが期待された時間で完了しないか、エラーコードで終了するならば、我々はhealthchecks.ioを通して警戒を得ます.

しばらくの間、これはかなりうまくいった.
しかし、すぐに我々は挑戦に直面しました.我々は、すべてのテスト環境に健康チェックを展開したかったが、それは何百と何百もの新しいチェックを作成する必要があります.それは多くのマニュアル作業です、そして、なぜあなたが自動化することができるとき、働く?
私はcopy the checks from one project to anotherにスクリプトを書くか、スクリプトをすべてのping終点を解析するスクリプトのように、我々のcodebaseに簡単に挿入されることができたか、Healthチェックvia terraformを管理するように熟慮しました.しかし、これらの解決策はどれも完璧ではなかった.私は完全にプロセスを自動化する何かを望んだ.
幸い、HealthCheckメンテナと話をした後、already had a basic script for thatと判明しました.ジョブが完了するたびに、それはHealthCheck APIへの単純な呼び出しを行い、チェックポイントは既に存在していない場合、チェックポイントを返す.終点をpingし、完了です!簡単なpeasy、関与する人間の仕事.
#!/bin/bash

API_KEY=your-api-key-here

# Check's parameters. This example uses system's hostname for check's name.
PAYLOAD='{"name": "'`hostname`'", "timeout": 60, "grace": 60, "unique": ["name"]}'

# Create the check if it does not exist.
# Grab the ping_url from JSON response using the jq utility:
URL=`curl -s https://healthchecks.io/api/v1/checks/  -H "X-Api-Key: $API_KEY" -d "$PAYLOAD"  | jq -r .ping_url`

# Finally, send a ping:
curl -m 10 --retry 5 $URL
私はこれに警告チャンネル、測定開始と終了時間で動作し、失敗を記録するために拡張しました.
< div >
24679152をインストールし、APIキーでhealthchecks_api_keyに置き換え、ファイルをcronジョブで出荷します.これでcronコマンドをスクリプトに渡すことができます.新しい環境を作る?ちょうどAPIキーを更新してください、そして、あなたは行きますp >
<堀田>代わりに人形を使用するか、手動のディストリビューション、またはDocker、またはHeck、Minecraftのレッドストーンブロックを使用して、誰が私を判断するか?p >
これは我々の生産環境で今何ヶ月もうまくいっています.ボーナスとして我々はHealthCheckに入る.仕事開始と終了時刻の詳細な履歴を見ることができます
<堀田>
< p >新しいデータセンターを立ち上げて、しっかりしたグリーンチェックの活気のある分野で快適になることができるのは素晴らしいことです.p >