直接使用的 https://github.com/airbnb/kafka-statsd-metrics2.git 这个将metric汇报到statsd中。

statsd是使用了collectd自带的plugin来实现的。这样等于每台服务器上都有statsd了。

最后collectd将收集到数据存储到influxdb集群中。

这个jar包在kafka 0.8.2和0.10.0上使用都没有问题。

不过在官网的readme中有些问题,故还是走了点弯路。

必须要自己编译一下。


git clone https://github.com/airbnb/kafka-statsd-metrics2.git
./gradlew shadowJar

这样我们就可以获得 kafka-statsd-metrics2-0.4.1-all.jar 这个jar包,放入到kafka的libs下。

由于这个是依赖了datadog的statsd client,因此还要下载一个jar包。

https://repo1.maven.org/maven2/com/indeed/java-dogstatsd-client/2.0.16/java-dogstatsd-client-2.0.16.jar

 

配置文件官网写的没有问题,直接使用就可以了


#for metric
# declare the reporter
kafka.metrics.reporters=com.airbnb.kafka.KafkaStatsdMetricsReporter
# enable the reporter, (false)
external.kafka.statsd.reporter.enabled=true
# the host of the StatsD server (localhost)
external.kafka.statsd.host=localhost
# the port of the StatsD server (8125)
external.kafka.statsd.port=8125
# enable the support of statsd tag extension, e.g. datadog statsd (true)
external.kafka.statsd.tag.enabled=true
# a prefix for all metrics names (empty)
external.kafka.statsd.metrics.prefix=
# note that the StatsD reporter follows the global polling interval (10)
kafka.metrics.polling.interval.secs=60

这里有个小插曲,本来是写入远程的statsD集群的,可最终在influxdb的数据居然显示的是influxdb机器的hostname。 于是tcpdump -i eth0 port 8125 发现,汇报的数据是没有包含host信息的,于是就选择汇报到本地的statsD中。

还有一个是collectd自带的statsD插件并不是支持所有statsD的所有数据格式的,不过基本包含的3个我们也够用了的。

汇报出来的metric太多了,就挑了一些重要的进行绘图和报警了。

下面这3个应该是kafka自身非常重要的几个metric了。

UnderReplicatedPartitions
OfflinePartitionsCount
ActiveControllerCount

Share Your Thought