StatsD Emitter

StatsD Emitter

statsd-emitter 확장은 Druid 메트릭을 StatsD 서버로 보내요. JSON 매핑 파일로 메트릭의 StatsD 타입과 dimension을 정의할 수 있고, DogStatsD 지원도 포함해요.

출처: 문서

본문

이 Apache Druid 확장을 사용하려면 extensions load list에 statsd-emitter를 포함해 주세요.

statsd-emitter

Introduction

이 확장은 druid 메트릭을 StatsD 서버로 보내요. (https://github.com/etsy/statsd) (https://github.com/armon/statsite)

Configuration

StatsD emitter의 모든 구성 파라미터는 druid.emitter.statsd 아래에 있어요.

속성 설명 필수 기본값
druid.emitter.statsd.hostname StatsD 서버의 hostname. yes none
druid.emitter.statsd.port StatsD 서버의 port. yes none
druid.emitter.statsd.prefix 선택적 메트릭 이름 접두사. no ""
druid.emitter.statsd.separator 메트릭 이름 구분자. no .
druid.emitter.statsd.includeHost hostname을 메트릭 이름의 일부로 포함할지 여부 플래그. no false
druid.emitter.statsd.dimensionMapPath 모든 Druid 메트릭에 대해 StatsD 타입과 원하는 dimension을 정의하는 JSON 파일. no 기본 매핑 제공. 아래 참고.
druid.emitter.statsd.blankHolder StatsD가 공백 문자가 있는 경로를 지원하지 않으므로 공백 문자 대체. no "-"
druid.emitter.statsd.queueSize 메시지 큐의 처리되지 않은 최대 메시지 수. no StatsD Client 기본값(4096)
druid.emitter.statsd.poolSize 네트워크 패킷 버퍼 풀 크기. no StatsD Client 기본값(512)
druid.emitter.statsd.processorWorkers 제출을 위해 버퍼를 조립하는 processor worker 스레드 수. no StatsD Client 기본값(1)
druid.emitter.statsd.senderWorkers 소켓에 버퍼를 제출하는 sender worker 스레드 수. no StatsD Client 기본값(1)
druid.emitter.statsd.dogstatsd DogStatsD 지원을 활성화할지 여부 플래그. dimension이 메트릭 이름의 일부가 아니라 tag로 포함되게 해요. convertRange 필드는 무시돼요. no false
druid.emitter.statsd.dogstatsdConstantTags druid.emitter.statsd.dogstatsd가 true면, String JSON 목록의 tag들이 모든 이벤트와 함께 전송돼요. no []
druid.emitter.statsd.dogstatsdServiceAsTag druid.emitter.statsd.dogstatsd와 druid.emitter.statsd.dogstatsdServiceAsTag가 모두 true면, druid 서비스(예: druid/broker, druid/coordinator 등)가 메트릭 이름(예: druid.broker.query.time)에 포함되는 대신 tag(예: druid_service:druid/broker)로 보고되고, druid가 메트릭 접두사(예: druid.query.time)로 사용돼요. no false
druid.emitter.statsd.dogstatsdEvents druid.emitter.statsd.dogstatsd와 druid.emitter.statsd.dogstatsdEvents가 모두 true면, Alert 이벤트가 DogStatsD로 보고돼요. no false

Druid to StatsD Event Converter

StatsD로 보내는 각 메트릭은 타입([timer, counter, guage] 중 하나)을 지정해야 해요. StatsD Emitter는 이 매핑이 JSON 파일로 제공되기를 기대해요. 추가로 이 매핑은 각 메트릭에 포함할 dimension을 지정해요. StatsD는 메트릭 값이 정수이기를 기대해요. Druid는 0에서 1 사이의 값을 가진 메트릭도 일부 내보내요. 이 메트릭들을 수용하기 위해 0에서 100 범위로 변환해요. 이 변환은 JSON 매핑 파일에서 선택적 convertRange 필드를 true로 설정하면 활성화돼요. 사용자가 자신의 JSON 파일을 지정하지 않으면 기본 매핑이 사용돼요. 모든 메트릭이 매핑되어야 해요. 매핑되지 않은 메트릭은 오류를 로그로 기록해요.

StatsD 메트릭 경로는 다음 스키마로 구성돼요.

<druid metric name> : { "dimensions" : <dimension list>, "type" : <StatsD type>, "convertRange" : true/false}

예:

query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"}

서로 다른 dimension을 가진 여러 서비스에서 내보내진 메트릭의 경우 메트릭 이름에 서비스 이름이 접두사로 붙어요.

예:

"druid/coordinator-segment/count" : { "dimensions" : ["dataSource"], "type" : "gauge" },  "druid/historical-segment/count" : { "dimensions" : ["dataSource", "tier", "priority"], "type" : "gauge" }

대부분의 사용 사례에서는 기본 매핑으로 충분해요.

더 알아보기 (Learn more)