监控kafka主要使用到了俩个工具,一个是kafka-manager,一个是java中的JMX
首先我们使用解压工具吧kafka-manager解压
unzip kafka-manager-2.0.0.2.zip -d ../training/
然后到减压的目录中找到刚刚减压完成的kafka,修改它的配置文件
cd ../training/kafka-manager-2.0.0.2/
vim conf/application.conf
修改第二十四行把你的zookeeper地址填进去,这里的zookeeper不是用来去监控kafka的,而是本身kafka-manager要使用zookeeper;并注释掉二十五行
修改到这里我们我们已经可以启动kafka-manager了
bin/kafka-manager &
因为kafka-manager默认的端口就是9000,这个和hdfs的端口有点冲突,如果是测试可以先把hdfs停掉或者是修改一下默认端口
bin/kafka-manager -Dhttp.port=8080 &
当我们看到这个就已经启动了kafka-manager,我用的是9000的端口,当我使用浏览器浏览9000端口的时候就出现如下图,下图是我创建了俩个测试cluster,如果是开始的话,需要点击addCluster ,添加监控的节点。
由于一开始我们没有启动jmx,所以在添加了cluster的监控节点后看不到生产这个发送给kafka多少消息和消费者consumer接受了多少消息。
所以如果我们想监控到更详细的消息,我们需要使用jmx工具配合kafka-manager一起使用。
在我们添加jmx工具的时候,我们需要把当前kafka停掉,再修改里边的配置,然后配置才能启动才能使用jmx。我们想要使用jmx监控那个kafka就在那个机器上把它的启动配置添加以下就可以了。
修改kafka的bin目录中的kafka-run-class.sh 脚本,在大约178行加入如下参数:
-Djava.rmi.server.hostname=bigdata111
然后我们在启动kafka就可以了,但是在启动之前我们需要指定jmx的端口,各个broker的端口要不一样
export JMX_PORT="9990"
bin/kafka-server-start.sh config/server0.properties
export JMX_PORT="9991"
bin/kafka-server-start.sh config/server1.properties
当我们一开始停止kafka的时候,kafka-manager也会停止,我们再启动一下kafka-manager。我们在看kafka-manager之前再看一下java自带的一个工具jconsole也可以配合jmx监控kafka,我们只需cmd命令行输入jconsole就出现如下图工具见面
我们使用远程连接连入进去,用法:hostname:port或者是jmx的控制协议,我们使用hostname:port这种我知道的方式连接一下如下图所示:
如上可以看到所有关于kafka的信息,在Mbean的地方更可以看到所有使用的的bean的情况
我们再进入到kafka-manager,启动kafka-manager后我们需要添加一个cluster并使jmx处于enable状态
然后我们就以看到它接受到字节数和发送出去的字节数