GitLab 서비스 측정을 위한 개발자 안내서
서비스 측정을 활성화하여 실행 시간, SQL 호출 수, 가비지 수집 통계, 메모리 사용량 등 느린 서비스의 디버깅을 할 수 있습니다.
측정 모듈
측정 모듈은 서비스의 실행을 측정하고 다음을 로깅하는 도구입니다.
- 서비스 클래스 이름
- 실행 시간
- SQL 호출 수
- 상세한
gc
통계 및 차이점 - RSS 메모리 사용량
- 서버 워커 ID
측정 모듈은 이러한 측정 값을 각 서비스 실행에 대해 단일 항목으로 구조화된 로그인 service_measurement.log
에 기록합니다.
GitLab.com의 경우, service_measurement.log
는 모니터링 솔루션의 일환으로 Elasticsearch 및 Kibana에 통합됩니다.
사용 방법
측정 모듈을 사용하면 단순히 서비스 클래스의 마지막 줄에 Measurable
을 추가함으로써 어떤 서비스의 실행을 간편하게 측정하고 로깅할 수 있습니다.
예를 들어 DummyService
클래스에 모듈을 추가하려면 다음과 같이합니다:
class DummyService
def execute
# ...
end
end
DummyService.prepend(Measurable)
EE
기능을 사용하는 EE
네임스페이스에서 모듈을 추가하는 경우, EE
모듈을 추가한 후에 Measurable
을 추가해야 합니다.
이렇게 함으로써 Measurable
이 조상 체인의 가장 아래에 있게 되어 EE
기능의 실행을 측정할 수 있습니다.
class DummyService
def execute
# ...
end
end
DummyService.prepend_mod_with('DummyService')
DummyService.prepend(Measurable)
추가 속성 로깅
특정 속성을 로깅해야 하는 경우 서비스 클래스에서 extra_attributes_for_measurement
를 정의할 수 있습니다.
def extra_attributes_for_measurement
{
project_path: @project.full_path,
user: current_user.name
}
end
서비스에 측정 모듈이 주입되면 일반적인 기능 플래그 뒤에 있습니다. 실제로 사용하려면 원하는 서비스에 대해 기능 플래그를 활성화하여 측정을 활성화해야 합니다.
기능 플래그를 사용하여 측정 활성화
다음 예에서 :gitlab_service_measuring_projects_import_service
기능 플래그가 Projects::ImportService
에 대한 측정 기능을 활성화하는 데 사용됩니다.
ChatOps에서:
/chatops run feature set gitlab_service_measuring_projects_import_service true