- 메트릭 수집
- 사용 가능한 메트릭
- Feature flag로 제어되는 메트릭
- Praefect 메트릭
- Sidekiq 메트릭
- 데이터베이스 부하 분산 메트릭
- 데이터베이스 분할 메트릭
- 연결 풀 메트릭
- 루비 메트릭
- Puma 메트릭
- Redis 지표
- Git LFS 지표
- 공유 디렉터리 지표
GitLab Prometheus 메트릭
GitLab Prometheus 메트릭을 활성화하려면:
- 관리자 액세스 권한이 있는 사용자로 GitLab에 서명합니다.
- 왼쪽 사이드바의 하단에서 관리자를 선택합니다.
- 설정 > 메트릭 및 프로파일링을 선택합니다.
- 메트릭 - 프로메테우스 섹션을 찾아 GitLab 프로메테우스 메트릭 엔드포인트 활성화를 선택합니다.
- 변경 사항이 적용되려면 GitLab을 다시 시작하세요.
자체 컴파일 설치의 경우 직접 구성해야 합니다.
메트릭 수집
GitLab은 자체 내부 서비스 메트릭을 모니터링하고 /-/metrics
엔드포인트에서 이를 사용할 수 있도록 합니다. 다른 프로메테우스 익스포터와 달리 클라이언트 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
|
| … (이하 생략)
Feature flag로 제어되는 메트릭
다음 메트릭은 feature flag로 제어할 수 있습니다.
Metric | Feature flag |
---|---|
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 작업은 메트릭을 수집할 수 있으며, 이러한 메트릭에 접근할 수 있습니다. 예를 들어, gitlab.yml
의 monitoring.sidekiq_exporter
구성 옵션을 사용합니다. 이러한 메트릭은 구성된 포트에서 /metrics
경로에서 제공됩니다.
Metric | Type | Since | Description | Labels |
---|---|---|---|---|
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 작업을 실행하는 데 사용된 DB 시간(초) |
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 | Redis 서버 쿼리를 수행하는 데 소요된 시간(초) |
queue , boundary , external_dependencies , feature_category , job_status , urgency
|
sidekiq_elasticsearch_requests_duration_seconds
| Histogram | 13.1 | Elasticsearch 서버 요청에 소요된 시간(초) |
queue , boundary , external_dependencies , feature_category , job_status , urgency
|
… |
(Please note that the rest of the content has been truncated.)
데이터베이스 부하 분산 메트릭
다음 메트릭을 제공합니다:
메트릭 | 유형 | Since | 설명 | 레이블 |
---|---|---|---|---|
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 | 잡프리칭된 복제본의 검색 시도 횟수 | result
|
데이터베이스 분할 메트릭
다음 메트릭을 제공합니다:
메트릭 | 유형 | Since | 설명 |
---|---|---|---|
db_partitions_present
| 게이지 | 13.4 | 현재 존재하는 데이터베이스 분할 수 |
db_partitions_missing
| 게이지 | 13.4 | 현재 예상되지만 존재하지 않는 데이터베이스 분할 수 |
연결 풀 메트릭
이러한 메트릭은 데이터베이스의 상태를 기록합니다 connection pools, 모든 메트릭에는 다음 레이블이 있습니다:
-
class
- 기록된 Ruby 클래스입니다.-
ActiveRecord::Base
는 주 데이터베이스 연결입니다. -
Geo::TrackingBase
는 활성화된 경우 Geo 추적 데이터베이스로의 연결입니다.
-
-
host
- 데이터베이스에 연결하는 데 사용되는 호스트 이름입니다. -
port
- 데이터베이스에 연결하는 데 사용되는 포트입니다.
메트릭 | 유형 | Since | 설명 |
---|---|---|---|
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 | 해당 큐에서 현재 대기 중인 스레드 |
루비 메트릭
일부 기본적인 루비 런타임 메트릭을 제공합니다:
메트릭 | 유형 | Since | 설명 |
---|---|---|---|
ruby_gc_duration_seconds
| 카운터 | 11.1 | 루비에서 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 메트릭
메트릭 | 유형 | Since | 설명 |
---|---|---|---|
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_redis_client_pipeline_redirections_count
| 히스토그램 | 17.0 | 파이프라인에서의 Redis 클러스터 리디렉션 수 |
Git LFS 지표
다양한 Git LFS 기능을 추적하는 지표.
지표 | 유형 | 버전 | 설명 |
---|---|---|---|
gitlab_sli_lfs_update_objects_total
| 카운터 | 16.10 | 총 업데이트된 LFS 객체 수 |
gitlab_sli_lfs_update_objects_error_total
| 카운터 | 16.10 | 총 업데이트된 LFS 객체 오류 수 |
gitlab_sli_lfs_check_objects_total
| 카운터 | 16.10 | 총 체크된 LFS 객체 수 |
gitlab_sli_lfs_check_objects_error_total
| 카운터 | 16.10 | 총 체크된 LFS 객체 오류 수 |
gitlab_sli_lfs_validate_link_objects_total
| 카운터 | 16.10 | 총 유효성 검사된 LFS 링크된 객체 수 |
gitlab_sli_lfs_validate_link_objects_error_total
| 카운터 | 16.10 | 총 유효성 검사된 LFS 링크된 객체 오류 수 |
공유 디렉터리 지표
GitLab Prometheus 클라이언트는 멀티 프로세스 서비스들 사이에 공유되는 지표 데이터를 저장할 디렉터리가 필요합니다. 이러한 파일들은 Puma 서버 아래에서 실행되는 모든 인스턴스 간에 공유됩니다. 이 디렉터리는 모든 실행 중인 Puma 프로세스에서 접근 가능해야 하며, 그렇지 않으면 지표가 올바르게 작동하지 않을 수 있습니다.
이 디렉터리의 위치는 환경 변수 prometheus_multiproc_dir
를 이용하여 구성됩니다.
최상의 성능을 위해 이 디렉터리를 tmpfs
에 만드는 것이 좋습니다.
만약 Linux 패키지
를 이용하여 GitLab을 설치했고, tmpfs
를 사용할 수 있다면, GitLab은 이 메트릭 디렉터리를 자동으로 구성합니다.