Dongkyu Hwangbo 0d2e91ed50 Adding Kafka-emitter (#3860)
* Initial commit

* Apply another config: clustername

* Rename variable

* Fix bug

* Add retry logic

* Edit retry logic

* Upgrade kafka-clients version to the most recent release

* Make callback single object

* Write documentation

* Rewrite error message and emit logic

* Handling AlertEvent

* Override toString()

* make clusterName more optional

* bump up druid version

* add producer.config option which make user can apply another optional config value of kafka producer

* remove potential blocking in emit()

* using MemoryBoundLinkedBlockingQueue

* Fixing coding convention

* Remove logging every exception and just increment counting

* refactoring

* trivial modification

* logging when callback has exception

* Replace kafka-clients 0.10.1.1 with 0.10.2.0

* Resolve the problem related of classloader

* adopt try statement

* code reformatting

* make variables final

* rewrite toString
2017-04-04 14:07:43 -07:00

1.5 KiB

layout
doc_page

Kafka Emitter

To use this extension, make sure to include kafka-emitter extension.

Introduction

This extension emits Druid metrics to a Kafka directly with JSON format.
Currently, Kafka has not only their nice ecosystem but also consumer API readily available. So, If you currently use Kafka, It's easy to integrate various tool or UI to monitor the status of your Druid cluster with this extension.

Configuration

All the configuration parameters for the Kafka emitter are under druid.emitter.kafka.

property description required? default
druid.emitter.kafka.bootstrap.servers Comma-separated Kafka broker. ([hostname:port],[hostname:port]...) yes none
druid.emitter.kafka.metric.topic Kafka topic name for emitter's target to emit service metric. yes none
druid.emitter.kafka.alert.topic Kafka topic name for emitter's target to emit alert. yes none
druid.emitter.kafka.producer.config JSON formatted configuration which user want to set additional properties to Kafka producer. no none
druid.emitter.kafka.clusterName Optional value to specify name of your druid cluster. It can help make groups in your monitoring environment. no none

Example

druid.emitter.kafka.bootstrap.servers=hostname1:9092,hostname2:9092
druid.emitter.kafka.metric.topic=druid-metric
druid.emitter.kafka.alert.topic=druid-alert
druid.emitter.kafka.producer.config={"max.block.ms":10000}