本文介绍如何通过E-MapReduce,从Kafka客户端采集Metrics数据,从而有效地进行性能监控。
前提条件
已创建Kafka集群,详情请参见创建集群。
说明 本文以EMR-3.21.3版本为例介绍。
背景信息
Kafka提供了一套非常完善的Metrics数据,覆盖Broker、Consumer、Producer、Stream以及Connect 。E-MapReduce通过Ganglia收集了Kafka Broker Metrics信息,可以监控Broker运行状态。Kafka应用包括Kafka Broker和Kafka客户端这两个角色,当出现读写性能问题时,仅从Broker角度难以分析,因此可以结合客户端的运行状况联合分析。
本文实现原理如下:
- 收集Metrics
因为Metrics默认提供了包含JmxReporter的Metrics Reporter插件扩展功能,即可以通过JMX工具来查看Kafka的Metrics ,所以可以使用Metrics Reporter(实现org.apache.kafka.common.metrics.MetricsReporter)来自定义收集Metrics。
- 存放Metrics
因为Kafka是一种存储系统,所以可以将Metrics存储至Kafka中。优势如下:
- 无需第三方存储系统。
- 数据可以接入到其他系统中。
完整的客户Metrics采集方案如下图所示。