Ambari Metrics Emitter

Ambari Metrics Emitter

이 Apache Druid 확장을 사용하려면 확장 로드 목록에 ambari-metrics-emitter를 포함하세요.

출처: 문서

본문

소개 (Introduction)

이 확장은 Druid 메트릭을 ambari-metrics carbon 서버로 방출해요. 이벤트는 pickled(즉 배치 처리)된 후 전송돼요. 배치의 크기는 구성할 수 있어요.

설정 (Configuration)

ambari-metrics emitter의 모든 구성 파라미터는 druid.emitter.ambari-metrics 아래에 있어요.

property description required? default
druid.emitter.ambari-metrics.hostname ambari-metrics 서버의 hostname yes none
druid.emitter.ambari-metrics.port ambari-metrics 서버의 port yes none
druid.emitter.ambari-metrics.protocol ambari metrics collector로 메트릭을 보낼 때 사용하는 프로토콜. http/https 중 하나 no http
druid.emitter.ambari-metrics.trustStorePath https에 사용할 trustStore 경로 no none
druid.emitter.ambari-metrics.trustStoreType https에 사용할 trustStore 타입 no none
druid.emitter.ambari-metrics.trustStoreType https에 사용할 trustStore 비밀번호 no none
druid.emitter.ambari-metrics.batchSize 한 배치로 보낼 이벤트 수 no 100
druid.emitter.ambari-metrics.eventConverter druid 이벤트를 ambari-metrics timeline event로 필터링·변환하는 컨버터(다음 섹션 참고) yes none
druid.emitter.ambari-metrics.flushPeriod 큐 플러싱 주기(밀리초) no 1 minute
druid.emitter.ambari-metrics.maxQueueSize 이벤트를 버퍼링하는 큐의 최대 크기 no MAX_INT
druid.emitter.ambari-metrics.alertEmitters alert가 전달될 emitter 목록 no 빈 목록 (forwarding 없음)
druid.emitter.ambari-metrics.emitWaitTime 이벤트를 보내려고 시도하는 대기 시간(밀리초). 그렇지 않으면 emitter가 이벤트를 던져요. no 0
druid.emitter.ambari-metrics.waitForEventTime 필요하면 이벤트가 사용 가능해질 때까지 기다리는 시간(밀리초) no 1000 (1 sec)

Druid에서 Ambari Metrics Timeline Event로의 변환

Ambari Metrics Timeline Event Converter는 druid 메트릭 이름과 dimension을 timeline event metricName으로 매핑하는 것을 정의해요.

ambari-metrics 메트릭 경로는 다음 스키마로 구성돼요:

<namespacePrefix>.[<druid service name>].[<druid hostname>].<druid metrics dimensions>.<druid metrics name>

나중에 충돌, 혼란스러운 데이터, 잠재적으로 잘못된 해석을 피하려면 메트릭 이름을 제대로 지정하는 것이 중요해요.

예시 druid.historical.hist-host1:8080.MyDataSourceName.GroupBy.query/time:

  • druid -> namespace prefix
  • historical -> service name
  • hist-host1:8080 -> druid hostname
  • MyDataSourceName -> dimension value
  • GroupBy -> dimension value
  • query/time -> metric name

이벤트 컨버터에는 두 가지 다른 구현이 있어요:

Send-All 컨버터

all이라고 불리는 첫 번째 구현은 모든 druid 서비스 메트릭 이벤트를 보내요.

경로 형태는 <namespacePrefix>.[<druid service name>].[<druid hostname>].<dimensions values ordered by dimension's name>.<metric>예요.

사용자는 <namespacePrefix>.[<druid service name>].[<druid hostname>].을 제어해요.

druid.emitter.ambari-metrics.eventConverter={"type":"all", "namespacePrefix": "druid.test", "appName":"druid"}

White-list 기반 컨버터

whiteList라고 불리는 두 번째 구현은 화이트리스트에 등록된 메트릭과 dimension만 보내요.

all 컨버터와 마찬가지로 사용자는 <namespacePrefix>.[<druid service name>].[<druid hostname>].을 제어해요.

White-list 기반 컨버터에는 ./src/main/resources/defaultWhiteListMap.json의 resources 아래에 다음 기본 white list map이 제공돼요.

사용자는 mapPath라는 속성을 제공해 기본 white list map을 재정의할 수 있어요.

이 속성은 white list map JSON object를 포함한 파일의 경로를 담은 String이에요.

예를 들어 다음 컨버터는 /pathPrefix/fileName.json 파일에서 map을 읽어요.

druid.emitter.ambari-metrics.eventConverter={"type":"whiteList", "namespacePrefix": "druid.test", "ignoreHostname":true, "appName":"druid", "mapPath":"/pathPrefix/fileName.json"}

Druid는 엄청나게 많은 메트릭을 방출하므로 whiteList 컨버터를 사용하는 것을 강력히 권장해요.

더 알아보기 (Learn more)

  • Loading extensions — 이 확장을 로드 목록에 포함하는 방법을 알아봐요.
  • Metrics — Druid가 방출하는 메트릭 목록을 확인해요.