- 메트릭스 수집
- 사용 가능한 메트릭스
- 특징 플래그로 제어되는 메트릭
- 프리펙트 메트릭
- Sidekiq 메트릭
- 데이터베이스 로드 밸런싱 지표
- 데이터베이스 파티셔닝 지표
- 연결 풀 지표
- Ruby 지표
- Puma 지표
- Redis 지표
- 공유 메트릭 디렉터리
GitLab 프로메테우스 메트릭스
GitLab 프로메테우스 메트릭스를 활성화하려면:
- 관리자 액세스 권한이 있는 사용자로 GitLab에 로그인합니다.
- 왼쪽 사이드바에서 맨 아래쪽에 있는 관리 영역(Admin Area)을 선택합니다.
- 설정 > 메트릭 및 프로파일링(Settings > Metrics and profiling)을 선택합니다.
- 메트릭스 - 프로메테우스(Metrics - Prometheus) 섹션을 찾아 GitLab 프로메테우스 메트릭스 엔드포인트 활성화(Enable GitLab Prometheus metrics endpoint)를 선택합니다.
- 변경 사항이 적용되도록 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.yml
의 monitoring.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
|
… (중략) |
(미해석문장)
데이터베이스 로드 밸런싱 지표
다음과 같은 지표가 제공됩니다:
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
|
데이터베이스 파티셔닝 지표
다음과 같은 지표가 제공됩니다:
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은 해당 메트릭 디렉터리를 자동으로 구성합니다.