drone.io でagentを監視するためのヘルスチェック用エンドポイントを設定する

この記事は drone.io Advent Calendar 2017 - Adventar の17日目の記事です。

drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。

github.com

ヘルスチェック用のエンドポイントを設定する

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"
}