sidekiqコンテナのヘルスチェック

ECSでsidekiqをコンテナとして実行するとき、ALBからHTTP経由でヘルスチェックができないので、Dockerのヘルスチェックを利用するといい。

Dockerのヘルスチェックはシェルスクリプトで行うことができ、終了ステータスが0ならhealthy、1ならunhealthyと判断する。そこで、sidekiqのpidfileを出力するように設定し

test -f sidekiq.pid

でヘルスチェックすればいい。

sidekiqのDockerイメージはRailsアプリケーションのものを再利用することも多いだろうから、ECSではタスク定義内のコンテナ定義で下のようにヘルスチェックを指定する。

[
  {
    "name": "sidekiq",
    "command": ["sidekiq", "--pidfile", "./sidekiq.pid"],
    "healthCheck": {
      "command": ["test", "-f", "./sidekiq.pid"]
    }
  }
]