메트릭 플러그인

메트릭 플러그인 (Metrics Plugins)

플러그 가능한 메트릭 백엔드를 사용해 Pinot의 메트릭 시스템을 구성하는 문서예요. Apache Pinot는 여러 메트릭 백엔드를 지원하기 위해 플러그 가능한 메트릭 팩토리를 사용해요. 각 Pinot 컴포넌트(Server, Broker, Controller, Minion)는 메트릭 구현을 독립적으로 구성할 수 있어요.

출처: 문서

본문

Apache Pinot는 여러 메트릭 백엔드를 지원하기 위해 플러그 가능한 메트릭 팩토리를 사용해요. 각 Pinot 컴포넌트(Server, Broker, Controller, Minion)는 메트릭 구현을 독립적으로 구성할 수 있어요.

사용 가능한 구현 (Available Implementations)

플러그인 클래스 이름 설명
Yammer (기본) org.apache.pinot.plugin.metrics.yammer.YammerMetricsFactory 가볍고 기본적인 메트릭 구현
Dropwizard org.apache.pinot.plugin.metrics.dropwizard.DropwizardMetricsFactory 슬라이딩 시간 창 저수지(reservoir)를 가진 전체 Dropwizard Metrics 통합
Compound org.apache.pinot.plugin.metrics.compound.CompoundPinotMetricsFactory 여러 백엔드에 동시에 메트릭 등록

구성 (Configuration)

다음을 사용해 어떤 컴포넌트든 메트릭 팩토리를 구성해요:

pinot.<component>.metrics.factory.className=<factory-class-name>

여기서 <component>는: server, broker, controller, minion 중 하나예요.

Yammer 메트릭 (기본) (Yammer Metrics (Default))

기본 메트릭 백엔드예요. 추가 구성이 필요 없어요.

pinot.server.metrics.factory.className=org.apache.pinot.plugin.metrics.yammer.YammerMetricsFactory

Dropwizard 메트릭 (Dropwizard Metrics)

슬라이딩 15분 시간 창 저수지, 상세 히스토그램·타이머, JMX 리포팅을 갖춘 전체 Dropwizard Metrics 라이브러리 통합을 제공해요.

pinot.server.metrics.factory.className=org.apache.pinot.plugin.metrics.dropwizard.DropwizardMetricsFactory

추가 속성:

속성 기본값 설명
pinot.<component>.metrics.dropwizard.domain org.apache.pinot.common.metrics 메트릭용 JMX 도메인 이름

예시:

pinot.server.metrics.factory.className=org.apache.pinot.plugin.metrics.dropwizard.DropwizardMetricsFactory
pinot.server.metrics.dropwizard.domain=my.company.pinot.metrics

Compound 메트릭 (다중 백엔드) (Compound Metrics (Multi-Backend))

Compound 메트릭 플러그인은 여러 백엔드에 동시에 메트릭을 등록해요. 메트릭 구현을 비교하거나 여러 모니터링 시스템에 보고할 때 유용해요.

pinot.server.metrics.factory.className=org.apache.pinot.plugin.metrics.compound.CompoundPinotMetricsFactory

추가 속성:

속성 기본값 설명
pinot.<component>.metrics.compound.algorithm CLASSPATH 발견 알고리즘: CLASSPATH, SERVICE_LOADER, 또는 LIST
pinot.<component>.metrics.compound.ignored (비어 있음) 제외할 팩토리 클래스 이름의 쉼표 구분 목록
pinot.<component>.metrics.compound.list (비어 있음) 포함할 팩토리 클래스 이름의 쉼표 구분 목록 (algorithm=LIST일 때만)

예시: Yammer와 Dropwizard 모두 사용:

pinot.server.metrics.factory.className=org.apache.pinot.plugin.metrics.compound.CompoundPinotMetricsFactory
pinot.server.metrics.compound.algorithm=LIST
pinot.server.metrics.compound.list=org.apache.pinot.plugin.metrics.yammer.YammerMetricsFactory,org.apache.pinot.plugin.metrics.dropwizard.DropwizardMetricsFactory

예시: Yammer를 제외한 클래스패스 발견:

pinot.server.metrics.factory.className=org.apache.pinot.plugin.metrics.compound.CompoundPinotMetricsFactory
pinot.server.metrics.compound.algorithm=CLASSPATH
pinot.server.metrics.compound.ignored=org.apache.pinot.plugin.metrics.yammer.YammerMetricsFactory

Compound 메트릭을 사용할 때는 레지스트리 간에 JMX MBean 이름이 충돌하지 않도록 해야 해요. 충돌하는 MBean 이름은 예측할 수 없는 메트릭 값을 유발할 수 있어요.

메트릭 타입 (Metric Types)

Pinot는 모든 백엔드를 통해 다음 메트릭 프리미티브를 노출해요:

타입 설명 예시
Counter 불연속 이벤트 개수 처리된 총 쿼리
Meter 이벤트 속도 초당 쿼리
Timer 지연 시간과 처리량 쿼리 실행 시간
Histogram 값 분포 쿼리 결과 크기
Gauge 특정 시점 값 세그먼트 수, 힙 사용량

JMX 리포팅 (JMX Reporting)

모든 메트릭 구현은 기본으로 활성화된 JMX 리포터를 포함해요. 메트릭 시스템 초기화 시 JmxReporterMetricsRegistryRegistrationListener가 자동으로 등록돼요.

추가 메트릭 리포팅(Prometheus, Grafana 등)을 구성하려면 Prometheus와 Grafana로 Pinot 모니터링을 보세요.

더 알아보기 (Learn more)