InfoGrab Docs

헬스 체크

요약

GitLab은 서비스 상태와 필수 서비스에 대한 연결 가능성을 나타내는 활성 상태 및 준비 상태 프로브를 제공합니다. 헬스 체크 엔드포인트는 일반적으로 트래픽을 리디렉션하기 전에 서비스 가용성을 결정해야 하는 로드 밸런서 및 기타 Kubernetes 스케줄링 시스템에 사용됩니다.

GitLab은 서비스 상태와 필수 서비스에 대한 연결 가능성을 나타내는 활성 상태 및 준비 상태 프로브를 제공합니다. 이 프로브는 데이터베이스 연결, Redis 연결 및 파일 시스템 액세스 상태를 보고합니다. 이 엔드포인트는 Kubernetes와 같은 스케줄러에 제공되어 시스템이 준비될 때까지 트래픽을 보류하거나 필요에 따라 컨테이너를 재시작할 수 있습니다.

헬스 체크 엔드포인트는 일반적으로 트래픽을 리디렉션하기 전에 서비스 가용성을 결정해야 하는 로드 밸런서 및 기타 Kubernetes 스케줄링 시스템에 사용됩니다.

이 엔드포인트를 대규모 Kubernetes 배포에서 효과적인 가동 시간을 결정하는 데 사용하면 안 됩니다. 그렇게 하면 자동 크기 조정, 노드 오류 또는 기타 정상적이고 파괴적이지 않은 운영 요구 사항으로 파드가 제거될 때 거짓 음성이 표시될 수 있습니다.

대규모 Kubernetes 배포에서 가동 시간을 결정하려면 UI에 대한 트래픽을 살펴봅니다. 이는 올바르게 균형 잡히고 예약되어 있으므로 효과적인 가동 시간의 더 나은 지표입니다. 로그인 페이지 /users/sign_in 엔드포인트도 모니터링할 수 있습니다.

GitLab.com에서는 가동 시간을 결정하기 위해 Pingdom과 같은 도구와 Apdex 측정값이 사용됩니다.

IP 허용 목록#

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

로컬에서 엔드포인트 사용#

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

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

헬스#

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

GET /-/health

요청 예시:

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

응답 예시:

GitLab OK

포괄적 헬스 체크#

Warning

로드 밸런싱이나 자동 크기 조정에 /health_check를 사용하지 마세요. 이 엔드포인트는 백엔드 서비스(데이터베이스, Redis)를 검증하며 이러한 서비스가 느리거나 사용할 수 없을 때 애플리케이션이 제대로 기능하더라도 실패합니다. 이로 인해 로드 밸런서에서 정상적인 애플리케이션 노드가 불필요하게 제거될 수 있습니다.

/health_check 엔드포인트는 데이터베이스 연결, Redis 가용성 및 기타 백엔드 서비스를 포함한 포괄적인 헬스 체크를 수행합니다. health_check gem에 의해 제공되며 전체 애플리케이션 스택을 검증합니다.

다음 용도로 이 엔드포인트를 사용합니다:

  • 포괄적인 애플리케이션 모니터링
  • 백엔드 서비스 상태 검증
  • 연결 문제 해결
  • 모니터링 대시보드 및 알림
GET /health_check
GET /health_check/database
GET /health_check/cache
GET /health_check/migrations

요청 예시:

curl "https://gitlab.example.com/health_check"

응답 예시 (성공):

success

응답 예시 (실패):

health_check failed: Unable to connect to database

사용 가능한 검사:

  • database - 데이터베이스 연결
  • migrations - 데이터베이스 마이그레이션 상태
  • cache - Redis 캐시 연결
  • geo (EE 전용) - Geo 복제 상태

준비 상태#

준비 상태 프로브는 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에서 제외됩니다.

활성 상태#

Warning

GitLab 12.4에서 활성 상태 검사의 응답 본문이 아래 예시와 일치하도록 변경되었습니다.

애플리케이션 서버가 실행 중인지 여부를 확인합니다. 이 프로브는 Rails 컨트롤러가 멀티스레딩으로 인해 교착 상태가 되지 않는지 확인하는 데 사용됩니다.

GET /-/liveness

요청 예시:

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

응답 예시:

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

{
   "status": "ok"
}

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

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

Sidekiq#

Sidekiq 헬스 체크 구성 방법을 알아봅니다.

헬스 체크

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

GitLab은 서비스 상태와 필수 서비스에 대한 연결 가능성을 나타내는 활성 상태 및 준비 상태 프로브를 제공합니다. 헬스 체크 엔드포인트는 일반적으로 트래픽을 리디렉션하기 전에 서비스 가용성을 결정해야 하는 로드 밸런서 및 기타 Kubernetes 스케줄링 시스템에 사용됩니다.

GitLab은 서비스 상태와 필수 서비스에 대한 연결 가능성을 나타내는 활성 상태 및 준비 상태 프로브를 제공합니다. 이 프로브는 데이터베이스 연결, Redis 연결 및 파일 시스템 액세스 상태를 보고합니다. 이 엔드포인트는 Kubernetes와 같은 스케줄러에 제공되어 시스템이 준비될 때까지 트래픽을 보류하거나 필요에 따라 컨테이너를 재시작할 수 있습니다.

헬스 체크 엔드포인트는 일반적으로 트래픽을 리디렉션하기 전에 서비스 가용성을 결정해야 하는 로드 밸런서 및 기타 Kubernetes 스케줄링 시스템에 사용됩니다.

이 엔드포인트를 대규모 Kubernetes 배포에서 효과적인 가동 시간을 결정하는 데 사용하면 안 됩니다. 그렇게 하면 자동 크기 조정, 노드 오류 또는 기타 정상적이고 파괴적이지 않은 운영 요구 사항으로 파드가 제거될 때 거짓 음성이 표시될 수 있습니다.

대규모 Kubernetes 배포에서 가동 시간을 결정하려면 UI에 대한 트래픽을 살펴봅니다. 이는 올바르게 균형 잡히고 예약되어 있으므로 효과적인 가동 시간의 더 나은 지표입니다. 로그인 페이지 /users/sign_in 엔드포인트도 모니터링할 수 있습니다.

GitLab.com에서는 가동 시간을 결정하기 위해 Pingdom과 같은 도구와 Apdex 측정값이 사용됩니다.

IP 허용 목록#

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

로컬에서 엔드포인트 사용#

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

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

헬스#

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

GET /-/health

요청 예시:

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

응답 예시:

GitLab OK

포괄적 헬스 체크#

Warning

로드 밸런싱이나 자동 크기 조정에 /health_check를 사용하지 마세요. 이 엔드포인트는 백엔드 서비스(데이터베이스, Redis)를 검증하며 이러한 서비스가 느리거나 사용할 수 없을 때 애플리케이션이 제대로 기능하더라도 실패합니다. 이로 인해 로드 밸런서에서 정상적인 애플리케이션 노드가 불필요하게 제거될 수 있습니다.

/health_check 엔드포인트는 데이터베이스 연결, Redis 가용성 및 기타 백엔드 서비스를 포함한 포괄적인 헬스 체크를 수행합니다. health_check gem에 의해 제공되며 전체 애플리케이션 스택을 검증합니다.

다음 용도로 이 엔드포인트를 사용합니다:

  • 포괄적인 애플리케이션 모니터링
  • 백엔드 서비스 상태 검증
  • 연결 문제 해결
  • 모니터링 대시보드 및 알림
GET /health_check
GET /health_check/database
GET /health_check/cache
GET /health_check/migrations

요청 예시:

curl "https://gitlab.example.com/health_check"

응답 예시 (성공):

success

응답 예시 (실패):

health_check failed: Unable to connect to database

사용 가능한 검사:

  • database - 데이터베이스 연결
  • migrations - 데이터베이스 마이그레이션 상태
  • cache - Redis 캐시 연결
  • geo (EE 전용) - Geo 복제 상태

준비 상태#

준비 상태 프로브는 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에서 제외됩니다.

활성 상태#

Warning

GitLab 12.4에서 활성 상태 검사의 응답 본문이 아래 예시와 일치하도록 변경되었습니다.

애플리케이션 서버가 실행 중인지 여부를 확인합니다. 이 프로브는 Rails 컨트롤러가 멀티스레딩으로 인해 교착 상태가 되지 않는지 확인하는 데 사용됩니다.

GET /-/liveness

요청 예시:

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

응답 예시:

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

{
   "status": "ok"
}

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

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

Sidekiq#

Sidekiq 헬스 체크 구성 방법을 알아봅니다.