在消费kafka的消息时,数据的变动是最重要的,要确保没有数据丢失,所以kafka的监控很重要.kafka的监控工具主流的有三种

  • 1、Kafka Web Conslole
  • 2、Kafka Manager
  • 3、KafkaOffsetMonitor
  • 4、kafka Eagle

以下主要介绍kafka Eagle的简单安装和部署

Kafka Eagle 用于监控 Kafka 集群中 Topic 被消费的情况。包含 Lag 的产生,Offset 的变动,Partition 的分布,Owner ,Topic 被创建的时间和修改的时间等信息。

下载:http://download.kafka-eagle.org/

GitHub 地址:https://github.com/smartloli/kafka-eagle

官网:http://www.kafka-eagle.org/

2.内容

  Kafka Eagle 涉及以下内容模块:

  • Dashboard
  • Topic(Create & List)
  • Consumers
  • Cluster Info

Kafka Eagle的浏览器页,如下图:

1.kafka+zookeeper准备

1.kafka需要开启JMX端口

    找到kafka安装路径,进入到bin文件夹,修改下面的地方。
    vi kafka-server-start.sh
...
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
    export JMX_PORT="9999"
fi
...
    参考链接:[kafka添加jmx端口]:https://ke.smartloli.org/3.Manuals/11.Metrics.html

2.了解kafka在zookeeper配置
    需要查看kafka的server.properties配置
    找到zookeeper.connect此项配置,这个是要配置到eagle里面的
    此处假设zookeeper.connect=192.168.18.11:2181,192.168.18.12:2181,192.168.18.13:2181
    !!!PS:此处踩了坑,如果说这里的zookeeper地址后面加了其他路径,在kafka-eagle里面也要配置,
    否则在kafka-eagle的Dashboard中无法读取到kafka的信息。比如我们有人安装的kafka集群里面就有
    192.168.18.11:2181/kafka1或者192.168.18.11:2181/kafka2这种地址。
    如果你在安装kafka的时候没有配置多余路径,这样是最好的,如果有一定要加上。
3.连通性测试
  安装kafka-eagle的服务器,一定要提前测试是否能连接kafka注册的zookeeper端口
  telnet 端口进行测试

2.JDK环境准备
jdk1.7+

3.开始安装kafka-eagle
1.下载安装包
软件安装目录建议按照自己的规范来,以后好找
cd /tmp
wget https://github.com/smartloli/kafka-eagle-bin/archive/v1.2.2.tar.gz
tar zxf v1.2.2.tar.gz
cd kafka-eagle-bin-1.2.2
tar zxf kafka-eagle-web-1.2.2-bin.tar.gz -C /data/app/
cd /data/app
mv kafka-eagle-web-1.2.2 kafka-eagle

2.环境配置
vi /etc/profile
export KE_HOME=/data/app/kafka-eagle
export PATH=$PATH:$KE_HOME/bin
ps:此处的KE_HOME按照自己实际安装的目录来,我安装在/data/app/kafka-eagle下面
如果你是安装的其他目录,别忘了修改。


3.配置修改
cd ${KE_HOME}/conf
vi system-config.properties

# multi zookeeper&kafka cluster list -- The client connection address of the Zookeeper cluster is set here
#如果只有一个集群的话,就写一个cluster1就行了
kafka.eagle.zk.cluster.alias=cluster1,cluster2
#这里填上刚才上准备工作中的zookeeper.connect地址
cluster1.zk.list=192.168.18.11:2181,192.168.18.12:2181,192.168.18.13:2181
#如果多个集群,继续写,如果没有注释掉
cluster2.zk.list=192.168.18.21:2181,192.168.18.22:2181,192.168.18.23:2181/kafka

# zk limit -- Zookeeper cluster allows the number of clients to connect to
kafka.zk.limit.size=25

# kafka eagel webui port -- WebConsole port access address
kafka.eagle.webui.port=8048     ###web界面地址端口

# kafka offset storage -- Offset stored in a Kafka cluster, if stored in the zookeeper, you can not use this option
kafka.eagle.offset.storage=kafka

# delete kafka topic token -- Set to delete the topic token, so that administrators can have the right to delete
kafka.eagle.topic.token=keadmin

# kafka sasl authenticate, current support SASL_PLAINTEXT
#如果kafka开启了sasl认证,需要在这个地方配置sasl认证文件
kafka.eagle.sasl.enable=false
kafka.eagle.sasl.protocol=SASL_PLAINTEXT
kafka.eagle.sasl.mechanism=PLAIN
kafka.eagle.sasl.client=/data/kafka-eagle/conf/kafka_client_jaas.conf

#下面两项是配置数据库的,默认使用sqlite,如果量大,建议使用mysql,这里我使用的是sqlit
#如果想使用mysql建议在文末查看官方文档
# Default use sqlite to store data
kafka.eagle.driver=org.sqlite.JDBC
# It is important to note that the '/hadoop/kafka-eagle/db' path must exist.
kafka.eagle.url=jdbc:sqlite:/data/app/kafka-eagle/db/ke.db   #这个地址,按照安装目录进行配置
kafka.eagle.username=root
kafka.eagle.password=smartloli

# <Optional> set mysql address
#kafka.eagle.driver=com.mysql.jdbc.Driver
#kafka.eagle.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#kafka.eagle.username=root
#kafka.eagle.password=smartloli


4.启动kafka-eagle
  cd ${KE_HOME}/bin
  chmod +x ke.sh
  ./ke.sh start
  查看日志是否出问题
  tailf ../log/log.log
  如果没问题,则直接登录
  http://host:8048/ke
  默认用户名:admin
  默认密码:12345
  如果进入到一下界面,就说明你安装成功了!


02-11 20:34