当前位置:   article > 正文

CMAK(Kafka-Manager)安装部署说明,实现Kafka集群的JMX监控_kafka manage jmx

kafka manage jmx

本文主要讲述对于启用了SASL_PLAINTEXT用户名密码模式的Kafka,如何安装部署雅虎的CMAK(即Kafka-Manager),并且支持Kafka集群的JMX监控及查看消费者信息。

软件环境:

  • 操作系统:centos 7.7 x64
  • Zookeeper:3.5.5
  • Kafka:2.4.0

准备工作:

这样操作之后,CMAK的目录为/usr/local/cmak-3.0.0.5,JDK11的目录为/usr/java/jdk-11.0.9。

配置及启动:

CMAK主要有两个配置文件需要修改,都位于conf目录下,分别是application.conf和consumer.properties

application.conf主要修改其中Zookeeper设置的几行,其中3行使用#注释,一行改为Zookeeper集群的地址,格式如下:

  1. #kafka-manager.zkhosts="kafka-manager-zookeeper:2181"
  2. #kafka-manager.zkhosts=${?ZK_HOSTS}
  3. cmak.zkhosts="kafka01:2181,kafka02:2181,kafka03:2181"
  4. #cmak.zkhosts=${?ZK_HOSTS}

consumer.properties主要修改安全协议的内容,将整个文件的内容改为如下代码即可:

  1. security.protocol=SASL_PLAINTEXT
  2. sasl.mechanism=PLAIN
  3. key.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
  4. value.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer

另外,在conf目录下新建一个文件kafka_client_jaas.conf,用来指定kafka的用户名密码,其内容如下,用户名密码应与kafka配置中的一致:

  1. KafkaClient {
  2. org.apache.kafka.common.security.plain.PlainLoginModule required
  3. username="admin"
  4. password="1234567890";
  5. };

然后,即可用如下命令启动CMAK了,不过此时启动的CMAK,无论是JMX监控还是消费者列表都是无法加载出来的

nohup /usr/local/cmak-3.0.0.5/bin/cmak  -java-home /usr/java/jdk-11.0.9/ -Dconfig.file=/usr/local/cmak-3.0.0.5/conf/application.conf -Dhttp.port=8080 >/usr/local/cmak-3.0.0.5/logs/cmak.log 2>/usr/local/cmak-3.0.0.5/logs/cmak-error.log &

启动后,即可在浏览器中使用http://ip:8080/访问CMAK网站了,界面如下:

CMAK主页界面
CMAK主页界面

接下来,需要解决JMX监控和消费者列表加载的问题

点击页面上的Modify按钮,进入配置界面,修改图中2项配置,并到最下方给配置SASL JAAS Config中的username和password的值加上单引号,保存后就可以将消费者列表加载出来了

JMX配置等
JMX配置等
SASL JAAS Config
SASL JAAS Config

至于JMX,如果服务器的防火墙是关闭的,那么此时应该可以加载出集群的所有数据流量信息了,如果防火墙是打开的,那么还需修改Kafka本身的配置

修改Kafka配置:

很多文章都会告诉你,需要修改kafka-server-start.sh,设置JMX_PORT为9999,然后设置防火墙开启9999端口,即可实现JMX监听

但其实是不行的,因为JMX这个9999的端口,只是一个侦听端口,它在9999这个端口侦听到请求后,会分配一个随机的RMI端口,让请求方去访问,如果防火墙不是关闭状态的话,那么这个随机端口是无论如何也不会被防火墙通过的

所以,我们其实还需要将这个随机的RMI端口也固定,具体操作如下:

修改Kafka的bin目录下的2个文件,kafka-run-class.sh和kafka-server-start.sh

kafka-run-class.sh增加一段,加在JMX port的后面即可,代码如下:

  1. # JMX rmi port to use
  2. if [ $JMX_RMI_PORT ]; then
  3. KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_RMI_PORT "
  4. fi

kafka-server-start.sh在if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then这一段中增加2行代码,将JMX的端口设为9999,JMX RMI的端口设为9998,代码如下:

  1. if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
  2. export KAFKA_HEAP_OPTS="-Xmx4G -Xms1G -Djava.security.auth.login.config=/usr/local/kafka/config/kafka_server_jaas.conf"
  3. export JMX_PORT="9999"
  4. export JMX_RMI_PORT="9998"
  5. fi

防火墙增加对9999和9998端口的开放:

  1. firewall-cmd --permanent --add-port=9998/tcp
  2. firewall-cmd --permanent --add-port=9999/tcp

重启Kafka和防火墙,CMAK即可监控整个集群的数据流量情况了:

Brokers详情
Brokers详情

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/670511
推荐阅读
相关标签
  

闽ICP备14008679号