jasper的技术小窝

关注DevOps、运维监控、Python、Golang、开源、大数据、web开发、互联网

使用InfluxDB监控kafka

作者:jasper | 分类:kafka | 标签:     | 阅读 1291 次 | 发布:2017-12-02 5:30 p.m.

在很早之前的一篇文章里面,介绍了使用JMXTrans来监控kafka,最近在玩InfluxDB,想着也可以用InfluxDB来存储kafka的监控数据。虽然仍然可以使用JMXTrans来将数据发到kafka,实际上网上也有这样的实现,但是其部署和配置都不够简便,所以本文提供了一个更方便的方案。

得益于kafka-graphite,我们一直使用的主动上报到graphite的方式,那么如果换做了InfluxDB,我们也可以采用类似的方式。所以就基于kafka-graphite,开发了一个kafka-influxdb。

项目地址:https://github.com/jasper-zhang/kafka-influxdb

具体的实现其实很简单,扩展了kafka自带的KafkaMetricsReporter即可,有兴趣的可以去看下源码。

下面来看下使用方式:

  1. 使用mvn package将源码编译为kafka-influxdb-*.jar
  2. 添加包kafka-influxdb-*.jar到kafka的broker的安装目录的libs/文件夹之下;
  3. 添加一下依赖到libs/下,其中包括converter-moshi-*.jar, influxdb-java-*.jar, logging-interceptor-*.jar, moshi-*.jar,okhttp-*.jar, okio-*.jar,retrofit-*.jar
  4. 配置broker;
  5. 重启broker。

另外,你也可以直接从release下载我编译好的,这样可以省略上面的1~3步骤了。

配置broker:

编辑server.properties来指定reporter,并开启reporter:

kafka.metrics.reporters=com.github.jasper.kafka.KafkaInfluxDBMetricsReporter
kafka.influxdb.metrics.reporter.enabled=true

除此之外还有一些可以自定义的默认配置:

kafka.metrics.polling.interval.secs=10
kafka.influxdb.metrics.address=http://localhost:8086
kafka.influxdb.metrics.database=kafka
kafka.influxdb.metrics.retentionPolicy=autogen
kafka.influxdb.metrics.username=root
kafka.influxdb.metrics.password=root
kafka.influxdb.metrics.consistency=all
kafka.influxdb.metrics.tags=hostname:yourhostname

其中kafka.influxdb.metrics.tags的格式为key1:value1,key2:value2,....

重启之后再influxdb里面就能看到采集的kafka相关的指标了:

是不是方便了很多,之后你就可以使用grafana来展示这些指标了,这一部分就不多说了。

其实现在越来越多的这样的开源的产品,都会提供一个接口来暴露本身的metric数据,这也是现在流行的微服务的统一方式,这样会让我们的监控也变得更加容易。不知道kafka什么时候可以支持。

【上一篇】 深入Golang之netpoller
【下一篇】 深入Golang之http
其他分类: