헬스 체크

Tier: Free, Premium, Ultimate Offering: Self-managed

GitLab은 서비스 상태 및 필요한 서비스에 대한 reachability를 나타내기 위한 라이브니스 및 레디니스 프로브를 제공합니다. 이러한 프로브는 데이터베이스 연결 상태, Redis 연결, 파일 시스템 접근 상태에 대한 보고를 합니다. 이러한 엔드포인트들은 시스템이 준비된 상태가 되거나 필요에 따라 컨테이너를 다시 시작할 때까지 쿠버네티스와 같은 스케줄러에 제공될 수 있습니다.

헬스 체크 엔드포인트는 일반적으로 로드 밸런서 및 다른 쿠버네티스 스케줄링 시스템에서 서비스 가용성을 결정해야 하는 경우에 사용됩니다.

크기가 큰 쿠버네티스 배포에서 유용한 업타임을 결정하기 위해서는 UI로부터의 트래픽을 살펴보세요. 이는 적절하게 균형을 이루고 스케줄링되며, 따라서 유효한 업타임의 더 나은 지표입니다. 또한 /users/sign_in 엔드포인트의 로그인 페이지를 모니터링할 수 있습니다.

GitLab.com에서는 Pingdom과 같은 도구 및 Apdex 측정을 사용하여 업타임을 결정합니다.

IP 허용 목록

모니터링 리소스에 액세스하려면 요청 클라이언트 IP를 허용 목록에 포함해야 합니다. 자세한 내용은 모니터링 엔드포인트에 IP를 허용 목록에 추가하는 방법을 참조하십시오.

로컬에서 엔드포인트 사용

기본 허용 목록 설정을 사용하면 다음 URL을 사용하여 로컬에서 프로브에 액세스할 수 있습니다.

GET http://localhost/-/health
GET http://localhost/-/readiness
GET http://localhost/-/liveness

헬스

응용프로그램 서버가 실행 중인지를 확인합니다. 데이터베이스 또는 다른 서비스가 실행 중인지를 확인하지 않습니다. 이 엔드포인트는 Rails 컨트롤러를 우회하고 요청 처리 라이프사이클 초기에 추가 미들웨어 BasicHealthCheck로 구현됩니다.

GET /-/health

예시 요청:

curl "https://gitlab.example.com/-/health"

예시 응답:

GitLab OK

레디니스

레디니스 프로브는 GitLab 인스턴스가 Rails 컨트롤러를 통해 트래픽을 수락할 준비가 되었는지 확인합니다. 기본적으로 인스턴스 확인만 유효성을 검사합니다.

all=1 매개변수가 지정된 경우, 프로브는 종속 서비스 (데이터베이스, Redis, Gitaly 등)도 유효성을 검사하고 각각에 대한 상태를 제공합니다.

GET /-/readiness
GET /-/readiness?all=1

예시 요청:

curl "https://gitlab.example.com/-/readiness"

예시 응답:

{
   "master_check":[{
      "status":"failed",
      "message": "unexpected Master check result: false"
   }],
   ...
}

실패 시, 엔드포인트는 503 HTTP 상태 코드를 반환합니다.

이 검사는 Rack Attack에서 제외됩니다.

라이브니스

경고: GitLab 12.4에서 라이브니스 체크의 응답 본문이 아래 예시와 일치하도록 변경되었습니다.

응용프로그램 서버가 실행 중인지를 확인합니다. 이 프로브는 레일즈 컨트롤러가 멀티 스레딩으로 인한 데드락에 걸리지 않았는지를 알기 위해 사용됩니다.

GET /-/liveness

예시 요청:

curl "https://gitlab.example.com/-/liveness"

성공 시, 엔드포인트는 아래와 같은 응답과 함께 200 HTTP 상태 코드를 반환합니다.

{
   "status": "ok"
}

실패 시, 엔드포인트는 503 HTTP 상태 코드를 반환합니다.

이 검사는 Rack Attack에서 제외됩니다.

Sidekiq

Sidekiq 헬스 체크를 구성하는 방법을 알아보세요.