kaka-manager和kafka-offset-monitor的安装和使用
由于kafka本身不提供ui操作界面,操作起来只提供了有限的几个脚本,所以使用起来对其本身的运行状态无法感知。但是,kafka本身是和zookeeper相连的,而对应producer和consumer的状态保存也都是通过zookeeper完成的,因此,可以通过读取zookeeper中的信息来构建出kafka的状态。另外,kafka本身也提供了一个JMX服务端口,来供外界查询当前的状态。这样一个明显
打包好的资源
Kafka-manager-1.3.07
- 卷1: http://download.csdn.net/detail/hwz2311245/9475611
- 卷2: http://download.csdn.net/detail/hwz2311245/9475587
kafka-web-console-2.1.0
- 卷1: http://download.csdn.net/detail/hwz2311245/9475635
- 卷2: http://download.csdn.net/detail/hwz2311245/9475663
由于kafka本身不提供ui操作界面,操作起来只提供了有限的几个脚本,所以使用起来对其本身的运行状态无法感知。但是,kafka本身是和zookeeper相连的,而对应producer和consumer的状态保存也都是通过zookeeper完成的,因此,可以通过读取zookeeper中的信息来构建出kafka的状态。另外,kafka本身也提供了一个JMX服务端口,来供外界查询当前的状态。
这样一个明显的需求,自然就有很多开源工具已经实现了这样一系列功能。我找到的主要有三个:kafka-web-console、kafka-manager和KafkaOffsetMonitor。其中,kafka-web-console已经停止更新,因此暂不考虑继续使用。而kafka-manager则是有yahoo开源出来的项目,属于商业级别的工具,因此功能最完善。
不幸的是,对于其安装过程,这些项目的readme上都描述不是很清楚,有的部分也相当费时。因此,在这里,我会介绍一下安装步骤,并共享出打包好的文件,可以省去大部分的下载时间。
这些项目大都是基于PlayFramework的,因此,要求jdk1.8以上。低版本的jdk可能会出现运行错误
kafka-manager
首先,下载并安装sbt
wget http://dl.bintray.com/sbt/debian/sbt-0.13.6.deb
sudo dpkg -i sbt-0.13.6.deb
sudo apt-get update
sudo apt-get install sbt
然后对kaka-manager进行打包:
git clone https://github.com/yahoo/kafka-manager
cd kafka-manager
sbt clean dist
打包过程中会下载很多依赖包,且速度极慢(我用了几个小时才打包完),最后会在target/universal目录下生成zip文件。有了这个zip文件后,之后再使用就只需要有java支持就行了。打包好的kafka-manager已经上传到了csdn,链接在博文顶端,可自行下载使用。
下载并解压后,修改conf/application.conf中的kafka-manager.zkhosts="ip:port"
即可,其他行可以删除。
另外,再启动kafka的时候也需要注意,必须加上通过设置JMX_PORT环境变量来启动kafka的jmx服务。另外,如果在部署kafka集群的时候,没有使用hostname而是使用的ip,那么一定要加上Djava.rmi.server.hostname来指定当前服务器的ip,其原理和kakfa中的advertised.host.name类似。
完整的命令示例如下:
KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=$ip" JMX_PORT=9997 bin/kafka-server-start.sh config/server-1.properties
其中KAFKA_JMX_OPTS是用来定义JMX设置的环境变量,前面3个参数是默认参数,在这里保持不变。JMX_PORT则是用来定义端口的,同时也是启动JMX的开关。
当然,如果你的服务器上已经部署好了DNS,不需要使用ip的话,就只需要设定JMX_PORT就好了。
启动好kafka集群后,在执行bin/kafka-manager就可以开启web界面了,端口默认为9000。启动完成之后,需要手动添加cluster,同时设置kafka版本号以及一些可选的信息,其中JMX的开关一定要打开,这样才能够获取当前kafka的数据吞吐速率。
KafkaOffsetMonitor
KafkaOffsetMonitor功能上不及kafka-manager,但是它提供了图形化的展示效果,因此,可以作为kafka-manager的补充工具。
KafkaOffsetMonitor其实也是需要打包的,不过这个项目的作者似乎考虑的比较周到,把打好的jar包在release中分享出来了,这样一来,就省事很多了。
直接到release目录下,找到最新(即第一个)的版本,然后找到该版本下的jar包,点击下载即可。
下载完成后,可以通过java命令执行:
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
其中,offsetStorage目前只支持kaka,zk按照host1:port1,host2:port2…的格式去写即可,port为开启web界面的端口号,refresh为刷新时间,retain为数据保留时间(单位seconds, minutes, hours, days)。
当然,你也可以把这个命令写成脚本,保存起来。
更多推荐
所有评论(0)