프로메테우스 메트릭 개발 가이드라인
라이브러리에 추가하기
우리는 프로메테우스를 지원하는 일반 시스템 서비스마다 2-4개의 가장 중요한 메트릭을 지원하고자 노력합니다. 라이브러리에 아직 추가되지 않은 특정 익스포터에 대한 지원을 찾는다면, common_metrics.yml 파일에 추가할 수 있습니다.
쿼리 식별자
새로운 메트릭을 추가하기 위한 요구사항은 변경 사항이 나중에 메트릭을 업데이트하는 데 사용되는 고유 식별자를 각 쿼리가 갖도록 하는 것입니다.
- group: 응답 메트릭 (NGINX Ingress)
metrics:
- title: "처리량"
y_axis:
name: "요청 / 초"
format: "number"
precision: 2
queries:
- id: response_metrics_nginx_ingress_throughput_status_code
query_range: 'sum(rate(nginx_upstream_responses_total{upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}[2m])) by (status_code)'
unit: req / sec
label: 상태 코드
기존 메트릭 업데이트
공통 메트릭을 추가하거나 변경한 후에 기존 메트릭을 쿼리하고 업데이트하는 import 스크립트를 다시 실행해야 합니다.
또는 데이터베이스 마이그레이션을 생성할 수도 있습니다.
class ImportCommonMetrics < Gitlab::Database::Migration[2.1]
def up
::Gitlab::DatabaseImporters::CommonMetrics::Importer.new.execute
end
def down
# 실행 안 함
end
end
쿼리 메트릭(즉, id:
로 식별됨)이 제거된 경우에는 기본적으로 데이터베이스에서 제거되지 않습니다.
제거된 쿼리 메트릭에 대해 어떤 작업을 수행할지 결정하는 추가 데이터베이스 마이그레이션을 추가하고자 할 수 있습니다.
예를 들어: 모든 종속 데이터를 다른 메트릭으로 마이그레이션하는 것에 관심이 있을 수 있습니다.
GitLab 프로메테우스 메트릭
GitLab은 자체 모니터링을 위한 프로메테우스 메트릭을 제공합니다.
새로운 메트릭 추가
이 섹션에서는 자체 모니터링을 위한 새로운 메트릭을 추가하는 방법을 설명합니다 (예시).
-
메트릭의 종류를 선택합니다:
Gitlab::Metrics.counter
Gitlab::Metrics.gauge
Gitlab::Metrics.histogram
Gitlab::Metrics.summary
- 메트릭에 적절한 이름을 선택합니다. 프로메테우스 메트릭 이름에 대한 가이드라인을 참조하세요.
- GitLab 프로메테우스 메트릭 디렉터리을 업데이트합니다.
- 사용할 레이블을 신중하게 선택합니다.
project_path
,project_id
와 같이 고차원의 값은 각 레이블 집합이/metrics
엔드포인트에 새 항목으로 노출되므로 이로 인해 서비스 가용성에 영향을 줄 수 있기 때문에 강하게 권장되지 않습니다. - 새 메트릭을 기록하는 관련 페이지 또는 코드를 트리거합니다.
- 새 메트릭이
/-/metrics
에서 나타나는지 확인합니다.
특정 컨텍스트에 바인딩되지 않은 메트릭(request
, process
, machine
, namespace
등)의 경우, 크론 기반 Sidekiq 작업에서 생성합니다:
- Geo 관련 메트릭의 경우,
Geo::MetricsUpdateService
를 확인합니다. - 기타 “글로벌” / 인스턴스 전역 메트릭의 경우,
Metrics::GlobalMetricsUpdateService
를 확인합니다.
하나 이상의 Sidekiq 인스턴스가 있는 설치에서 Sidekiq에서 데이터를 내보낼 때 항상 동일한 익스포터가 쿼리될 것이라는 보장은 없습니다.
이슈 406583에서 더 많은 내용과 주의사항을 읽고 이해할 수 있으며, 푸시 게이트웨이를 사용한 가능한 해결책에 대해 논의합니다.