drone.io でagentを監視するためのヘルスチェック用エンドポイントを設定する
この記事は drone.io Advent Calendar 2017 - Adventar の17日目の記事です。
drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。
ヘルスチェック用のエンドポイントを設定する
drone agent複数生やしたdrone agentの監視を行いたい場合がでてくるかもしれません。ただdrone agentはAPIなどが出ているわけではないので、そのままだとヘルスチェックを行うのが面倒です。
隠しオプションDRONE_HEALTHCHECK
を使うとヘルスチェック用のエンドポイントを生やすことができます。
docker-compose を使っている場合は以下のように設定してください。
3000番で上がってくるのでports
を設定するのを忘れないようにしましょう。
services: drone-agent: image: drone/agent:0.8.2 command: agent restart: always ports: - 3000:3000 volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_SERVER=drone.example.com:9000 - DRONE_SECRET=000000000000000000000000 - DRONE_HEALTHCHECK=true
設定後は3つのエンドポイントが設定されます。
/healthz
正常な場合はステータスコード200、問題がある場合は500が返ります。
$ curl -I http://localhost:3000/healthz HTTP/1.1 200 OK Date: Sat, 16 Dec 2017 07:42:04 GMT Content-Type: text/plain; charset=utf-8
/varz
実行中のジョブが見えます。
curl -s http://localhost:3000/varz | jq
{ "polling_count": 0, "running_count": 1, "running": { "9999": { "id": "9999", "repository": "hoge/drone-test", "build_number": "01", "build_started": "2017-11-22T12:01:46.382605125Z", "build_timeout": 3600000000000 } } }
/version
agentのバージョンが取れるようです。
curl -s http://localhost:3000/version | jq
{ "version": "0.8.2+build.1356", "source": "https://github.com/drone/drone" }