KafkaOffsetMonitor安装部署
KafkaOffsetMonitor是有由Kafka开源社区提供的一款Web管理界面,这个应用程序用来实时监控Kafka服务的Consumer以及它们所在的Partition中的Offset,你可以通过浏览当前的消费者组,并且每个Topic的所有Partition的消费情况都可以观看的一清二楚。它让我们很直观的知道,每个Partition的Message是否消费掉,有木有阻塞等等。
这个Web管理平台保留的Partition、Offset和它的Consumer的相关历史数据,我们可以通过浏览Web管理的相关模块,清楚的知道最近一段时间的消费情况。
该Web管理平台有以下功能:
环境:
部署本机 192.168.1.171
zk 192.168.1.110,192.168.1.112
下载:
在安装KafkaOffsetMonitor管理平台时,我们需要先下载其安装包,其资源可以在Github上找到
源码地址:
https://github.com/quantifind/KafkaOffsetMonitor
jar包地址:
https://github.com/quantifind/KafkaOffsetMonitor/releases/tag/v0.2.1
网络共享:
http://pan.baidu.com/s/1sj0YERV
安装部署
KafkaOffsetMonitor的安装部署较为简单,所有的资源都打包到一个JAR文件中了,因此,直接运行即可,省去了我们去配置。这里我们可以新建一个目录单独用于Kafka的监控目录,我这里新建一个kafka_monitor文件目录,然后我们在准备启动脚本,脚本内容如下所示:
java -cp KafkaOffsetMonitor-assembly-0.2.1.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--offsetStorage kafka
--zk zk-server1,zk-server2 \
--port 8080 \
--refresh 10.seconds \
--retain 2.days
解释下这条启动命令的含义,首先我们需要指明运行Web监控的类,然后需要用到ZooKeeper,所有要填写ZK集群信息,接着是Web运行端口,页面数据刷新的时间以及保留数据的时间值。
可以写个启动脚本:
vi start.sh
nohup java -cp ./KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk 192.168.1.10:2181,192.168.1.11:2181,192.168.1.6:2181 --port 8080 --refresh 10.seconds --retain 3.days
&
访问:
http://192.168.1.171:9001/
一些参数的含义如下:
Topic:创建Topic名称
Partition:分区编号
Offset:表示该Parition已经消费了多少Message
LogSize:表示该Partition生产了多少Message
Lag:表示有多少条Message未被消费
Owner:表示消费者
Created:表示该Partition创建时间
Last Seen:表示消费状态刷新最新时间
在运行KafkaOffsetMonitor的JAR包时,需要确保启动参数的配置正确,以免启动出错,另外,
Github的上的KafkaOffsetMonitor的JAR中的静态资源有些链接用到了Google的超链接,所有如果直接只用,若本地木有代理软件会启动出错,这里使用网络所提供的JAR,这个JAR是经过静态资源改版后重新编译的使用本地静态资源。
打好包好,在部署机器上解压,修改好配置文件,就可以运行了。
unzip kafka-manager-1.0-SNAPSHOT.zip
kafka-manager.zkhosts="192.168.1.10:2181,192.168.1.11:2181,192.168.1.6:2181"
cd kafka-manager-1.0-SNAPSHOT/bin ./kafka-manager -Dconfig.file=../conf/application.conf
或者
./bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080
查看帮助 和 后台运行:
./kafka-manager -h
nohup ./kafka-manager -Dconfig.file=../conf/application.conf >/devull 2>&1&
默认http端口是9000,可以修改配置文件里的http.port的值,或者通过命令行参数传递:
./kafka-manager -Dhttp.port=9001
正常来说,play框架应该会自动加载conf/application.conf配置里的内容,但是貌似这个不起作用,要显式指定才行。
参考:https://github.com/yahoo/kafka-manager/issues/16
Open file
./bin/kafka-server-start.sh
to add text:
export JMX_PORT=9703
export "KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.1.22
-Djava.net.preferIPv4Stack=true"