토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

프로메테우스 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.


Federation을 이용하면 프로메테우스 서버로 다른 프로메테우스 서버에서 저장하는 시계열을 스크랩할 수 있다.

목차


Use cases

Federation에는 다양한 유스 케이스가 존재한다. 흔하게는 프로메테우스 모니터링을 확장이 가능한 구조로 구성하거나, 특정 서비스 전용 프로메테우스에서 다른 서비스의 프로메테우스로 관련 메트릭을 가져오는 데 사용한다.

Hierarchical federation

Hierarchical federation을 이용하면 프로메테우스를 데이터 센터 수십 개와 노드 수백만 개가 있는 환경으로 확장할 수 있다. 이때 사용하는 federation 토폴로지는 트리에 가까운데, 상위 레벨에 프로메테우스 서버들이 있고, 하위에는 더 많은 서버들이 존재하는 구조다. 상위 서버는 하위 서버에서 집계한 시계열 데이터를 수집한다.

예를 들어 데이터 센터별로 매우 상세한 데이터(인스턴스 수준으로 필터링할 수 있는)를 수집하는 프로메테우스 서버들을 따로 두고, 이 로컬 서버들에서 집계한 데이터(job 수준으로 필터링)만 수집하고 저장하는 글로벌 프로메테우스 서버 셋을 구성할 수 있다. 이 구조는 종합적인 글로벌 뷰와 상세한 로컬 뷰를 제공한다.

Cross-service federation

cross-service federation에선 특정 서비스의 프로메테우스 서버가 다른 서비스의 프로메테우스 서버에서 저장하는 데이터를 스크랩하도록 설정해서, 단일 서버 내에서 두 데이터 셋을 이용해 alert를 정의하고 쿼리를 실행할 수 있게 만든다.

예를 들어서 여러 서비스를 실행하고 있는 클러스터 스케줄러가 이 클러스터에서 실행되는 서비스 인스턴스들에 대한 리소스 사용 정보(ex. 메모리/CPU 사용량)를 노출한다고 해보자. 반면에 이 클러스터에서 실행되는 서비스는 애플리케이션 전용 서비스 메트릭만을 노출한다. 이런 두 메트릭 셋은 별도 다른 프로메테우스 서버로 스크랩하는 경우가 많다. 서비스 수준 메트릭을 관리하는 프로메테우스 서버는 federation을 이용하면 클러스터 프로메테우스에서 자신의 서비스와 관련된 리소스 사용량 메트릭을 가져올 수 있다. 따라서 이 서버 내에선 두 메트릭 셋을 다 활용할 수 있게 된다.


Configuring federation

모든 프로메테우스 서버는 /federate 엔드포인트를 노출하고 있으며, 이 엔드포인트에선 해당 서버에서 저장하는 시계열 셋의 현재 값을 조회할 수 있다. 조회할 시계열을 선택하기 위해선 반드시 URL 파라미터 match[]를 최소 하나는 지정해야 한다. 각 match[] 인자에는 up이나 {job="api-server"}같은 instant 벡터 셀렉터를 명시해야 한다. match[] 파라미터를 여러 개 제공하면 매칭되는 모든 시계열의 합집합을 선택한다.

두 개의 다른 서버끼리 메트릭을 연합하려면 목적지 프로메테우스 서버에서 소스 서버의 /federate 엔드포인트를 스크랩하도록 설정해주고, 스크랩 옵션 honor_labels도 활성화하고 (소스 서버에서 노출한 레이블을 덮어쓰지 않도록), 원하는 match[] 파라미터를 넘겨주면 된다. 예를 들어 아래 있는 scrape_configs에선, source-prometheus-{1,2,3}:9090에 있는 프로메테우스 서버에 저장된 시계열 중 job="prometheus" 레이블이 있거나 메트릭명이 job:으로 시작하는 모든 시계열을, 스크랩하는 프로메테우스로 가져온다federate:

scrape_configs:
  - job_name: 'federate'
    scrape_interval: 15s

    honor_labels: true
    metrics_path: '/federate'

    params:
      'match[]':
        - '{job="prometheus"}'
        - '{__name__=~"job:.*"}'

    static_configs:
      - targets:
        - 'source-prometheus-1:9090'
        - 'source-prometheus-2:9090'
        - 'source-prometheus-3:9090'

Next :
Writing HTTP Service Discovery
HTTP 서비스 디스커버리를 이용해 프로메테우스 타겟 등록하기

전체 목차는 여기에 있습니다.

<< >>

TOP