GitLab 애플리케이션 서비스 수준 지표(SLI)
Ruby 코드베이스에서 서비스 수준 지표(SLI)를 직접 정의하고, Prometheus 메트릭으로 추적하며 서비스 모니터링과 알림에 활용하는 방법을 설명합니다.
Ruby 코드베이스에서 직접 서비스 수준 지표(Service Level Indicators, SLI) 를 정의할 수 있습니다. 이를 통해 작업과 그 성공 여부의 정의를 구현 코드와 가깝게 유지할 수 있으며, 기능을 개발하는 사람들이 해당 기능을 어떻게 모니터링해야 하는지 쉽게 정의할 수 있습니다. 기존 SLI # rails_request global_search_apdex global_search_error_rate global_search_indexing_apdex sidekiq_execution zoekt_tasks 새 SLI 정의하기 # SLI는 Gitlab::Metrics::Sli::Apdex 또는 Gitlab::Metrics::Sli::ErrorRate 클래스를 사용하여 정의할 수 있습니다. SLI를 정의하면 Rails 애플리케이션에서 두 개의 Prometheus 카운터 가 발행됩니다. 두 카운터는 대체로 같은 방식으로 동작하며 총 작업 수를 포함합니다. Apdex 는 성공률을 사용하여 성공 비율을 계산하고, ErrorRate 는 오류율을 사용하여 오류 비율을 계산합니다. 다음 메트릭이 정의됩니다: Gitlab::Metrics::Sli::Apdex.new('foo') 는 다음을 정의합니다: gitlab_sli_foo_apdex_total — 총 측정 횟수. gitlab_sli_foo_apdex_success_total — 성공한 측정 횟수. Gitlab::Metrics::Sli::ErrorRate.new('foo') 는 다음을 정의합니다: gitlab_sli_foo_total — 총 측정 횟수. gitlab_sli_foo_error_total — 오류 측정 횟수. 이 메트릭은 오류율이므로 오류 수를 총 횟수로 나눕니다. 예시에서 보듯이, 두 SLI는 기본 이름을 공유할 수 있습니다(이 예시에서는 foo ). 동일한 작업을 참조하는 경우에는 이 방법을 권장합니다. 성공적인 작업의 성능을 측정할 때는 Apdex 를 사용해야 합니다. 실패한 요청의 성능은 ErrorRate 로 추적해야 하므로 측정할 필요가 없습니다. 예를 들어, 요청이 지정된 지연 임계값 내에서 수행되는지 여부를 측정할 수 있습니다. 실패한 작업의 비율을 측정할 때는 ErrorRate 를 사용해야 합니다. 예를 들어, 실패한 요청이 500 이상의 HTTP 상태를 반환하는지 여부를 측정할 수 있습니다. 첫 번째 스크래핑 전에 모든 가능한 레이블 조합으로 SLI를 초기화 해 두는 것이 중요합니다. 이렇게 하면 이 카운터들을 계산에 사용할 때 혼란스러운 결과를 방지할 수 있습니다. SLI를 초기화하려면 .initialize_sli 클래스 메서드를 사용합니다. 예를 들면 다음과 같습니다: Gitlab::Metrics::Sli::Apdex.initialize_sli(:received_email, [ { feature_category: :team_planning, email_type: :create_issue }, { feature_category: :service_desk,