GitLab 프로메테우스 메트릭스

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

GitLab 프로메테우스 메트릭스를 활성화하려면:

  1. 관리자 액세스 권한이 있는 사용자로 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 맨 아래쪽에 있는 관리 영역(Admin Area)을 선택합니다.
  3. 설정 > 메트릭 및 프로파일링(Settings > Metrics and profiling)을 선택합니다.
  4. 메트릭스 - 프로메테우스(Metrics - Prometheus) 섹션을 찾아 GitLab 프로메테우스 메트릭스 엔드포인트 활성화(Enable GitLab Prometheus metrics endpoint)를 선택합니다.
  5. 변경 사항이 적용되도록 GitLab을 다시 시작합니다.

자체 컴파일 설치의 경우, 직접 구성해야 합니다.

메트릭스 수집

GitLab은 자체 내부 서비스 메트릭스를 모니터링하고 /-/metrics 엔드포인트에서 이를 사용할 수 있게 합니다. 다른 프로메테우스(Prometheus) 익스포터와 달리, 메트릭스에 액세스하려면 클라이언트 IP 주소가 명시적으로 허용되어야 합니다.

이러한 메트릭스는 Linux package 및 Helm 차트 설치에 대해 활성화 및 수집됩니다. 자체 컴파일 설치의 경우, 이러한 메트릭스를 매뉴얼으로 활성화하고 프로메테우스 서버에서 수집해야 합니다.

Sidekiq 노드에서 메트릭스를 활성화하고 확인하려면 Sidekiq 메트릭스를 참조하세요.

사용 가능한 메트릭스

다음과 같은 메트릭스가 있습니다:

메트릭스 유형 버전 설명 레이블
gitlab_cache_misses_total Counter 10.2 캐시 적중 실패 controller, action, store, endpoint_id
gitlab_cache_operation_duration_seconds Histogram 10.2 캐시 액세스 시간 operation, store, endpoint_id
gitlab_cache_operations_total Counter 12.2 컨트롤러 또는 액션별 캐시 작업 controller, action, operation, store, endpoint_id
gitlab_cache_read_multikey_count Histogram 15.7 다중 키 캐시 읽기 작업 수 controller, action, store, endpoint_id
gitlab_ci_pipeline_builder_scoped_variables_duration Histogram 14.5 CI/CD 작업의 스코프 변수 생성 시간  
gitlab_ci_pipeline_creation_duration_seconds Histogram 13.0 CI/CD 파이프라인 생성 시간 gitlab
gitlab_ci_pipeline_size_builds Histogram 13.1 파이프라인 내에서 빌드의 총 수 source

(이하 생략)

특징 플래그로 제어되는 메트릭

다음 메트릭은 특징 플래그로 제어할 수 있습니다:

메트릭 특징 플래그
gitlab_view_rendering_duration_seconds prometheus_metrics_view_instrumentation
gitlab_ci_queue_depth_total gitlab_ci_builds_queuing_metrics
gitlab_ci_queue_size gitlab_ci_builds_queuing_metrics
gitlab_ci_queue_size_total gitlab_ci_builds_queuing_metrics
gitlab_ci_queue_iteration_duration_seconds gitlab_ci_builds_queuing_metrics
gitlab_ci_current_queue_size gitlab_ci_builds_queuing_metrics
gitlab_ci_queue_retrieval_duration_seconds gitlab_ci_builds_queuing_metrics
gitlab_ci_queue_active_runners_total gitlab_ci_builds_queuing_metrics

프리펙트 메트릭

프리펙트를 구성하여 메트릭을 보고할 수 있습니다. 사용 가능한 메트릭에 대한 정보는 해당 문서를 참조하세요.

Sidekiq 메트릭

Sidekiq 작업은 메트릭을 수집할 수 있으며, Sidekiq 에서 내보낼 수 있습니다: 예를 들어, gitlab.ymlmonitoring.sidekiq_exporter 구성 옵션을 사용하여 접근할 수 있습니다. 이러한 메트릭은 구성된 포트의 /metrics 경로에서 제공됩니다.

메트릭 유형 버전 설명 레이블
sidekiq_jobs_cpu_seconds Histogram 12.4 Sidekiq 작업을 실행하는 데 필요한 CPU 시간(초) queue, boundary, external_dependencies, feature_category, job_status, urgency
sidekiq_jobs_completion_seconds Histogram 12.2 Sidekiq 작업을 완료하는 데 소요된 시간 queue, boundary, external_dependencies, feature_category, job_status, urgency
sidekiq_jobs_db_seconds Histogram 12.9 Sidekiq 작업을 실행하는 데 필요한 데이터베이스 시간(초) queue, boundary, external_dependencies, feature_category, job_status, urgency
sidekiq_jobs_gitaly_seconds Histogram 12.9 Sidekiq 작업을 실행하는 데 필요한 Gitaly 시간(초) queue, boundary, external_dependencies, feature_category, job_status, urgency
sidekiq_redis_requests_duration_seconds Histogram 13.1 Sidekiq 작업이 Redis 서버를 조회하는 데 소요된 시간(초) queue, boundary, external_dependencies, feature_category, job_status, urgency
… (중략)        

(미해석문장)

데이터베이스 로드 밸런싱 지표

Tier: Premium, Ultimate Offering: Self-Managed

다음과 같은 지표가 제공됩니다:

Metric Type Since Description Labels
db_load_balancing_hosts Gauge 12.3 현재 로드 밸런싱 호스트 수  
sidekiq_load_balancing_count Counter 13.11 데이터 일관성이 :sticky 또는 :delayed로 설정된 Sidekiq 작업에 로드 밸런싱 사용 queue, boundary, external_dependencies, feature_category, job_status, urgency, data_consistency, load_balancing_strategy
gitlab_transaction_caught_up_replica_pick_count_total Counter 14.1 피해 복제본에 대한 검색 시도 횟수 result

데이터베이스 파티셔닝 지표

Tier: Premium, Ultimate Offering: Self-Managed

다음과 같은 지표가 제공됩니다:

Metric Type Since Description
db_partitions_present Gauge 13.4 현재 존재하는 데이터베이스 파티션 수
db_partitions_missing Gauge 13.4 현재 예상되지만 존재하지 않는 데이터베이스 파티션 수

연결 풀 지표

이러한 지표는 데이터베이스의 연결 풀 상태를 기록하며 모든 지표에는 다음과 같은 라벨이 있습니다.

  • class - 레코드되는 Ruby 클래스입니다.
    • ActiveRecord::Base는 주 연결 데이터베이스입니다.
    • Geo::TrackingBase는 활성화된 경우 Geo 추적 데이터베이스에 대한 연결입니다.
  • host - 데이터베이스에 연결하는 데 사용되는 호스트 이름입니다.
  • port - 데이터베이스에 연결하는 데 사용되는 포트입니다.
Metric Type Since Description
gitlab_database_connection_pool_size Gauge 13.0 전체 연결 풀 용량
gitlab_database_connection_pool_connections Gauge 13.0 풀 내 현재 연결 수
gitlab_database_connection_pool_busy Gauge 13.0 소유자가 여전히 살아 있는 사용 중인 연결
gitlab_database_connection_pool_dead Gauge 13.0 소유자가 살아 있지 않은 사용 중인 연결
gitlab_database_connection_pool_idle Gauge 13.0 사용되지 않는 연결
gitlab_database_connection_pool_waiting Gauge 13.0 현재 이 대기열에 대기 중인 스레드

Ruby 지표

일부 기본적인 Ruby 런타임 지표가 제공됩니다:

Metric Type Since Description
ruby_gc_duration_seconds Counter 11.1 Ruby의 GC에서 소요된 시간
ruby_gc_stat_... Gauge 11.1 GC.stat의 다양한 지표
ruby_gc_stat_ext_heap_fragmentation Gauge 15.2 라이브 객체 대 에덴 슬롯의 Ruby 힙 단편화 정도 (범위: 0에서 1)
ruby_file_descriptors Gauge 11.1 프로세스 당 파일 디스크립터 수
ruby_sampler_duration_seconds Counter 11.1 통계 수집에 소요된 시간
ruby_process_cpu_seconds_total Gauge 12.0 프로세스 당 총 CPU 시간
ruby_process_max_fds Gauge 12.0 프로세스 당 최대 개방된 파일 디스크립터 수
ruby_process_resident_memory_bytes Gauge 12.0 프로세스의 메모리 사용량 (RSS/Resident Set Size)
ruby_process_resident_anon_memory_bytes Gauge 15.6 프로세스의 익명 메모리 사용량 (RSS/Resident Set Size)
ruby_process_resident_file_memory_bytes Gauge 15.6 프로세스의 파일 백드 메모리 사용량 (RSS/Resident Set Size)
ruby_process_unique_memory_bytes Gauge 13.0 프로세스의 메모리 사용량 (USS/Unique Set Size)
ruby_process_proportional_memory_bytes Gauge 13.0 프로세스의 메모리 사용량 (PSS/Proportional Set Size)
ruby_process_start_time_seconds Gauge 12.0 프로세스 시작 시간의 UNIX 타임스탬프

Puma 지표

Metric Type Since Description
puma_workers Gauge 12.0 총 워커 수
puma_running_workers Gauge 12.0 부팅된 워커 수
puma_stale_workers Gauge 12.0 이전 워커 수
puma_running Gauge 12.0 실행 중인 스레드 수
puma_queued_connections Gauge 12.0 워커의 “할 일” 집합에서 기다리고 있는 연결 수
puma_active_connections Gauge 12.0 요청을 처리 중인 스레드 수
puma_pool_capacity Gauge 12.0 현재 사용할 수 있는 워커의 요청 수
puma_max_threads Gauge 12.0 최대 워커 스레드 수
puma_idle_threads Gauge 12.0 요청을 처리하지 않는 생성된 스레드 수

Redis 지표

이 클라이언트 지표는 Redis 서버 지표를 보완하는 것을 목표로 합니다. 이러한 지표는 Redis 인스턴스별로 분류됩니다. 이러한 지표에는 Redis 인스턴스를 나타내는 storage 라벨이 있습니다. 예를 들어, cache 또는 shared_state.

Metric Type Since Description
gitlab_redis_client_exceptions_total Counter 13.2 예외 클래스별 Redis 클라이언트 예외 수
gitlab_redis_client_requests_total Counter 13.2 Redis 클라이언트 요청 수
gitlab_redis_client_requests_duration_seconds Histogram 13.2 블로킹 명령을 제외한 Redis 요청 지연 시간
gitlab_redis_client_redirections_total Counter 15.10 리디렉션 유형별 Redis Cluster MOVED/ASK 리디렉션 수
gitlab_redis_client_requests_pipelined_commands Histogram 16.4 단일 Redis 서버로 보내는 파이프라인당 명령 수
gitlab_redis_client_pipeline_redirections_count Histogram 17.0 파이프라인의 Redis Cluster 리디렉션 수

공유 메트릭 디렉터리

GitLab Prometheus 클라이언트는 멀티 프로세스 서비스 간에 공유되는 메트릭 데이터를 저장할 디렉터리가 필요합니다. 이 파일들은 Puma 서버 아래에서 실행 중인 모든 인스턴스간에 공유됩니다. 해당 디렉터리는 모든 실행 중인 Puma 프로세스에서 접근 가능해야 하며, 그렇지 않을 경우 메트릭이 올바르게 작동하지 않을 수 있습니다.

이 디렉터리의 위치는 환경 변수 prometheus_multiproc_dir를 사용하여 구성합니다. 최상의 성능을 위해 이 디렉터리를 tmpfs에 생성하세요.

만약, GitLab이 Linux 패키지를 사용하여 설치되고 tmpfs를 사용할 수 있다면, GitLab은 해당 메트릭 디렉터리를 자동으로 구성합니다.