프로메테우스 메트릭 개발 가이드라인

라이브러리에 추가하기

우리는 프로메테우스를 지원하는 일반 시스템 서비스마다 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은 자체 모니터링을 위한 프로메테우스 메트릭을 제공합니다.

새로운 메트릭 추가

이 섹션에서는 자체 모니터링을 위한 새로운 메트릭을 추가하는 방법을 설명합니다 (예시).

  1. 메트릭의 종류를 선택합니다:

    • Gitlab::Metrics.counter
    • Gitlab::Metrics.gauge
    • Gitlab::Metrics.histogram
    • Gitlab::Metrics.summary
  2. 메트릭에 적절한 이름을 선택합니다. 프로메테우스 메트릭 이름에 대한 가이드라인을 참조하세요.
  3. GitLab 프로메테우스 메트릭 디렉터리을 업데이트합니다.
  4. 사용할 레이블을 신중하게 선택합니다. project_path, project_id와 같이 고차원의 값은 각 레이블 집합이 /metrics 엔드포인트에 새 항목으로 노출되므로 이로 인해 서비스 가용성에 영향을 줄 수 있기 때문에 강하게 권장되지 않습니다.
  5. 새 메트릭을 기록하는 관련 페이지 또는 코드를 트리거합니다.
  6. 새 메트릭이 /-/metrics에서 나타나는지 확인합니다.

특정 컨텍스트에 바인딩되지 않은 메트릭(request, process, machine, namespace 등)의 경우, 크론 기반 Sidekiq 작업에서 생성합니다:

  • Geo 관련 메트릭의 경우, Geo::MetricsUpdateService를 확인합니다.
  • 기타 “글로벌” / 인스턴스 전역 메트릭의 경우, Metrics::GlobalMetricsUpdateService를 확인합니다.

하나 이상의 Sidekiq 인스턴스가 있는 설치에서 Sidekiq에서 데이터를 내보낼 때 항상 동일한 익스포터가 쿼리될 것이라는 보장은 없습니다.

이슈 406583에서 더 많은 내용과 주의사항을 읽고 이해할 수 있으며, 푸시 게이트웨이를 사용한 가능한 해결책에 대해 논의합니다.