GitLab 성능 모니터링

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

GitLab은 “GitLab Performance Monitoring”이라고 불리는 자체 응용 프로그램 성능 메트릭 시스템을 가지고 있습니다. GitLab Performance Monitoring은 Community 및 Enterprise 에디션에서 모두 사용할 수 있습니다.

이 소개 외에도, GitLab Performance Monitoring을 이해하고 적절하게 구성하기 위해 다음 문서를 읽는 것이 좋습니다:

GitLab 성능 모니터링 소개

GitLab 성능 모니터링을 통해 다양한 통계를 메트릭할 수 있습니다. 이는 다음과 같은 통계를 포함하지만 이에 국한되지는 않습니다:

  • 트랜잭션을 완료하는 데 걸린 시간 (웹 요청 또는 Sidekiq 작업).
  • 실행된 SQL 쿼리 및 HAML 뷰 렌더링에 소요된 시간.
  • (Instrumented) 루비 메소드 실행에 소요된 시간.
  • 루비 객체 할당 및 특정 객체 유지 시간.
  • 프로세스의 메모리 사용량 및 오픈 파일 디스크립터와 같은 시스템 통계.
  • 루비 가비지 수집 통계.

메트릭 유형

두 가지 유형의 메트릭이 수집됩니다:

  1. 트랜잭션별 메트릭.
  2. 일정 간격으로 수집된 샘플링된 메트릭.

트랜잭션 메트릭

트랜잭션 메트릭은 단일 트랜잭션과 관련된 메트릭입니다. 이에는 트랜잭션 지속 시간, 실행된 SQL 쿼리의 타이밍, HAML 뷰 렌더링에 소요된 시간 등과 관련된 통계가 포함됩니다. 이러한 메트릭은 모든 Rack 요청 및 처리된 Sidekiq 작업에 대해 수집됩니다.

샘플링된 메트릭

샘플링된 메트릭은 단일 트랜잭션과 연관시킬 수 없는 메트릭입니다. 예시로 가비지 수집 통계 및 유지된 루비 객체가 있습니다. 이러한 메트릭은 일정한 간격으로 수집됩니다. 이 간격은 두 부분으로 구성됩니다:

  1. 사용자가 정의한 간격.
  2. 간격 위에 무작위로 생성된 오프셋이 더해지는데, 동일한 오프셋은 연속으로 두 번 사용될 수 없습니다.

실제 간격은 정의된 간격의 절반 아래부터 정의된 간격의 절반 위에 있을 수 있습니다. 예를 들어, 사용자가 정의한 15초 간격의 경우, 실제 간격은 7.5부터 22.5초 사이 어디에나 있을 수 있습니다. 실제 간격은 프로세스의 수명 동안 한 번 생성되어 재사용되는 것이 아니라 각 샘플링 실행마다 생성됩니다.

사용자가 정의한 간격은 환경 변수를 통해 지정할 수 있습니다. 다음 환경 변수가 인식됩니다:

  • RUBY_SAMPLER_INTERVAL_SECONDS
  • DATABASE_SAMPLER_INTERVAL_SECONDS
  • ACTION_CABLE_SAMPLER_INTERVAL_SECONDS
  • PUMA_SAMPLER_INTERVAL_SECONDS
  • THREADS_SAMPLER_INTERVAL_SECONDS
  • GLOBAL_SEARCH_SAMPLER_INTERVAL_SECONDS