메트릭 플러그인
메트릭 플러그인 (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 모니터링을 보세요.