- 메트릭 수집
- 사용 가능한 메트릭
- 피처 플래그로 제어되는 메트릭
- Praefect 메트릭
- Sidekiq 메트릭
- 데이터베이스 로드 밸런싱 지표
- 데이터베이스 파티션 지표
- 연결 풀 지표
- 루비 지표
- Puma 지표
- Redis 메트릭
- 메트릭 공유 디렉터리
GitLab Prometheus 메트릭
GitLab Prometheus 메트릭을 활성화하려면:
- 관리자 액세스 권한을 가진 사용자로 GitLab에 로그인합니다.
- 왼쪽 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
- 설정 > 메트릭 및 프로파일링을 선택합니다.
- 메트릭 - Prometheus 섹션을 찾아 GitLab Prometheus 메트릭 엔드포인트 활성화를 선택합니다.
- 변경 사항이 적용되려면 GitLab을 다시 시작합니다.
자체 컴파일 설치의 경우 매뉴얼으로 구성해야 합니다.
메트릭 수집
GitLab은 자체 내부 서비스 메트릭을 모니터링하고 /-/metrics
엔드포인트에서 사용할 수 있도록 합니다. 다른 Prometheus 익스포터와 달리 클라이언트 IP 주소는 명시적으로 허용되어야 합니다.
Linux 패키지 및 Helm 차트 설치를 위해 이러한 메트릭이 활성화되고 수집됩니다. 자체 컴파일 설치의 경우 이러한 메트릭을 매뉴얼으로 활성화하고 Prometheus 서버에서 수집해야 합니다.
Sidekiq 노드에서 메트릭을 활성화하고 보려면 Sidekiq 메트릭을 참조하세요.
사용 가능한 메트릭
다음 메트릭이 제공됩니다:
메트릭 | 유형 | 버전 | 설명 | 라벨 |
---|---|---|---|---|
gitlab_cache_misses_total
| 카운터 | 10.2 | 캐시 읽기 실패 |
controller , action , store , endpoint_id
|
gitlab_cache_operation_duration_seconds
| 히스토그램 | 10.2 | 캐시 액세스 시간 |
operation , store , endpoint_id
|
gitlab_cache_operations_total
| 카운터 | 12.2 | 컨트롤러 또는 액션별 캐시 작업 |
controller , action , operation , store , endpoint_id
|
gitlab_cache_read_multikey_count
| 히스토그램 | 15.7 | 다중 키 캐시 읽기 작업 수 |
controller , action , store , endpoint_id
|
gitlab_ci_pipeline_builder_scoped_variables_duration
| 히스토그램 | 14.5 | CI/CD 작업에 대한 범위별 변수 생성에 걸리는 시간 | |
gitlab_ci_pipeline_creation_duration_seconds
| 히스토그램 | 13.0 | CI/CD 파이프라인 생성에 걸리는 시간 | gitlab
|
gitlab_ci_pipeline_size_builds
| 히스토그램 | 13.1 | 파이프라인 내 빌드의 총 수, 파이프라인 소스별 그룹화 | 소스
|
… (이어서) |
피처 플래그로 제어되는 메트릭
다음 메트릭은 피처 플래그로 제어할 수 있습니다:
메트릭 | 피처 플래그 |
---|---|
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
|
Praefect 메트릭
Praefect를 구성할 수 있습니다. 사용 가능한 메트릭에 대한 자세한 정보는 관련 문서를 확인하세요.
Sidekiq 메트릭
Sidekiq 작업은 메트릭을 수집할 수도 있으며, 이러한 메트릭은 Sidekiq 내보내기기가 활성화된 경우에만 액세스할 수 있습니다: 예를 들어, gitlab.yml
의 monitoring.sidekiq_exporter
구성 옵션을 사용합니다. 이러한 메트릭은 지정된 포트의 /metrics
경로에서 제공됩니다.
⋮ (이하 생략)
데이터베이스 로드 밸런싱 지표
다음 지표들을 확인할 수 있습니다:
지표 | 유형 | 버전 | 설명 | 라벨 |
---|---|---|---|---|
db_load_balancing_hosts
| 게이지 | 12.3 | 현재 로드 밸런싱 호스트 수 | |
sidekiq_load_balancing_count
| 카운터 | 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
| 카운터 | 14.1 | caught up 복제본의 검색 시도 수 | result
|
데이터베이스 파티션 지표
다음 지표들을 확인할 수 있습니다:
지표 | 유형 | 버전 | 설명 |
---|---|---|---|
db_partitions_present
| 게이지 | 13.4 | 현재 데이터베이스 파티션 수 |
db_partitions_missing
| 게이지 | 13.4 | 현재 예상되었지만 존재하지 않은 데이터베이스 파티션 수 |
연결 풀 지표
이러한 지표들은 데이터베이스의 상태를 기록합니다. 연결 풀에 대한 레이블이 모두 있습니다:
-
class
- 레코드되는 Ruby 클래스.-
ActiveRecord::Base
는 주 데이터베이스 연결입니다. -
Geo::TrackingBase
는 활성화된 경우 Geo 추적 데이터베이스에 대한 연결입니다.
-
-
host
- 데이터베이스에 연결하는 데 사용되는 호스트 이름. -
port
- 데이터베이스에 연결하는 데 사용되는 포트.
지표 | 유형 | 버전 | 설명 |
---|---|---|---|
gitlab_database_connection_pool_size
| 게이지 | 13.0 | 총 연결 풀 용량 |
gitlab_database_connection_pool_connections
| 게이지 | 13.0 | 현재 풀의 연결 수 |
gitlab_database_connection_pool_busy
| 게이지 | 13.0 | 소유자가 아직 살아 있는 사용 중인 연결 |
gitlab_database_connection_pool_dead
| 게이지 | 13.0 | 소유자가 살아 있지 않은 사용 중인 연결 |
gitlab_database_connection_pool_idle
| 게이지 | 13.0 | 사용되지 않는 연결 |
gitlab_database_connection_pool_waiting
| 게이지 | 13.0 | 현재 이 대기열에서 대기 중인 스레드 |
루비 지표
일부 기본적인 루비 런타임 지표가 사용 가능합니다:
지표 | 유형 | 버전 | 설명 |
---|---|---|---|
ruby_gc_duration_seconds
| 카운터 | 11.1 | Ruby의 GC에서 소요된 시간 |
ruby_gc_stat_...
| 게이지 | 11.1 | GC.stat에서 다양한 메트릭 |
ruby_gc_stat_ext_heap_fragmentation
| 게이지 | 15.2 | 라이브 오브젝트 대 eden 슬롯에 대한 루비 힙 단편화 정도(범위 0에서 1) |
ruby_file_descriptors
| 게이지 | 11.1 | 프로세스 당 파일 디스크립터 |
ruby_sampler_duration_seconds
| 카운터 | 11.1 | 통계 수집에 소요된 시간 |
ruby_process_cpu_seconds_total
| 게이지 | 12.0 | 프로세스당 총 CPU 시간 |
ruby_process_max_fds
| 게이지 | 12.0 | 프로세스 당 최대 오픈 파일 디스크립터 수 |
ruby_process_resident_memory_bytes
| 게이지 | 12.0 | 프로세스의 메모리 사용량 (RSS/Resident Set Size) |
ruby_process_resident_anon_memory_bytes
| 게이지 | 15.6 | 프로세스의 익명 메모리 사용량 (RSS/Resident Set Size) |
ruby_process_resident_file_memory_bytes
| 게이지 | 15.6 | 프로세스의 파일 지원 메모리 사용량 (RSS/Resident Set Size) |
ruby_process_unique_memory_bytes
| 게이지 | 13.0 | 프로세스의 메모리 사용량 (USS/Unique Set Size) |
ruby_process_proportional_memory_bytes
| 게이지 | 13.0 | 프로세스의 메모리 사용량 (PSS/Proportional Set Size) |
ruby_process_start_time_seconds
| 게이지 | 12.0 | 프로세스 시작 시간의 UNIX 타임스탬프 |
Puma 지표
지표 | 유형 | 버전 | 설명 |
---|---|---|---|
puma_workers
| 게이지 | 12.0 | 총 워커 수 |
puma_running_workers
| 게이지 | 12.0 | 부팅된 워커 수 |
puma_stale_workers
| 게이지 | 12.0 | 이전 워커 수 |
puma_running
| 게이지 | 12.0 | 실행 중인 스레드 수 |
puma_queued_connections
| 게이지 | 12.0 | 워커의 “할 일” 대기 중인 연결 수 |
puma_active_connections
| 게이지 | 12.0 | 요청을 처리 중인 스레드 수 |
puma_pool_capacity
| 게이지 | 12.0 | 현재 처리할 수 있는 요청 수 |
puma_max_threads
| 게이지 | 12.0 | 최대 워커 스레드 수 |
puma_idle_threads
| 게이지 | 12.0 | 요청을 처리하지 않는 스레드 수 |
Redis 메트릭
이 클라이언트 메트릭은 Redis 서버 메트릭을 보완하기 위한 것입니다.
이러한 메트릭은 Redis 인스턴스별로 분해되어 있습니다.
이러한 메트릭은 모두 storage
라벨이 있으며, 이는 Redis 인스턴스를 나타냅니다. 예를 들어 cache
또는 shared_state
등이 있습니다.
메트릭 | 유형 | 버전 | 설명 |
---|---|---|---|
gitlab_redis_client_exceptions_total
| 카운터 | 13.2 | 예외 클래스별로 분해된 Redis 클라이언트 예외 수 |
gitlab_redis_client_requests_total
| 카운터 | 13.2 | Redis 클라이언트 요청 수 |
gitlab_redis_client_requests_duration_seconds
| 히스토그램 | 13.2 | 블로킹 명령을 제외한 Redis 요청 대기 시간 |
gitlab_redis_client_redirections_total
| 카운터 | 15.10 | 리디렉션 유형별로 분해된 Redis 클러스터 MOVED/ASK 리디렉션 수 |
gitlab_redis_client_requests_pipelined_commands
| 히스토그램 | 16.4 | 단일 Redis 서버로 전송된 파이프라인 당 명령 수 |
메트릭 공유 디렉터리
GitLab Prometheus 클라이언트에는 다중 프로세스 서비스 간에 공유되는 메트릭 데이터를 저장할 디렉터리가 필요합니다. 이러한 파일은 Puma 서버 아래에서 실행되는 모든 인스턴스에서 공유됩니다. 이 디렉터리는 모든 실행 중인 Puma 프로세스에서 접근할 수 있어야 하며, 메트릭이 올바르게 작동하지 않을 수 있습니다.
이 디렉터리의 위치는 환경 변수 prometheus_multiproc_dir
을 사용하여 구성됩니다.
최상의 성능을 보장하기 위해, 이 디렉터리를 tmpfs
에 생성하세요.
만약 Linux package를 사용하여 GitLab을 설치하고 있다면,
그리고 tmpfs
를 사용할 수 있는 경우, GitLab은 이를 위해 메트릭 디렉터리를 구성합니다.