一、关于Kafka Eagle
Kafka Eagle是一款Kafka集群消息监控系统,在其之前还有KafkaMonitor和Kafka Manager,也可以去了解一下。
官方文档:https://ke.smartloli.org/2.Install/4.Configure.html
二、Kafka Eagle 下载安装以及配置
1.下载
https://github.com/smartloli/kafka-eagle git地址
http://download.smartloli.org/ 可以直接下载(我使用的)
2.安装
注意: 在安装之前先要配置好JDK
① 先解压缩下载文件
tar -zxvf kafka-eagle-${version}-bin.tar.gz
② 配置环境变量
vi /etc/profile
export KE_HOME=/data/soft/new/kafka-eagle
export PATH=$PATH:$KE_HOME/bin
source ./etc/profile 使其生效
③配置系统文件(system-config.properties
)
基本配置:
Name | Default | Type | Describe |
---|---|---|---|
kafka.eagle.zk.cluster.alias | cluster1,Cluster2 | String | 多卡夫卡cluser别名。 |
cluster1.zk.list | tdn1:2181,tdn2:2181,tdn3:2181 | String | Kafka cluster1 zookeeper地址。 |
cluster2.zk.list | xdn10:2181,xdn11:2181,xdn12:2181 | String | Kafka cluster2 zookeeper地址。 |
kafka.zk.limit.size | 25 | Int | Kafka Eagle Zookeeper客户端的最大连接数。 |
kafka.eagle.webui.port | 8048 | Int | Kafka Eagle WebUI端口。 |
cluster1.kafka.eagle.offset.storage | kafka | String | 存储在kafka主题中的Kafka偏移量。 |
cluster2.kafka.eagle.offset.storage | ZK | String | 存储在zookeeper中的Kafka偏移量。() |
kafka.eagle.metrics.charts | false | Boolean | Kafka Eagle默认禁用指标。 |
kafka.eagle.sql.fix.error | false | Boolean | Kafka Eagle默认禁用固定kafka sql查询错误。 |
kafka.eagle.sql.topic.records.max | 5000 | Long | Kafka Eagle SQL查询主题最大记录。 |
kafka.eagle.topic.token | keadmin | String | |
报警邮箱配置(最好一般使用163)
Name | Default | Type | Describe |
---|---|---|---|
kafka.eagle.mail.enable | 真正 | 布尔 | Kafka Eagle enable alert mail. |
kafka.eagle.mail.sa | SA | String | Kafka Eagle alert administrators. |
kafka.eagle.mail.username | alert_sa@mail.com | String | Kafka Eagle alert server username. |
kafka.eagle.mail.password | password | String | Kafka Eagle alert server password. |
kafka.eagle.mail.server.host | smtp.smartloli.org | String | Kafka Eagle alert server address. |
kafka.eagle.mail.server.port | 25 | String | Kafka Eagle alert server port. |
DingDing:
Name | Default | Type | Describe |
---|---|---|---|
kafka.eagle.im.dingding.enable | true | Boolean | Kafka Eagle enable alert dingding. |
kafka.eagle.im.dingding.url | https://oapi.dingtalk.com/robot/send?access_token= | String | Kafka Eagle dingding api. |
微信配置:
Name | Default | Type | Describe |
---|---|---|---|
kafka.eagle.im.wechat.enable | true | 布尔 | Kafka Eagle启用提醒微信。 |
kafka.eagle.im.wechat.url | https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token= | String | Kafka Eagle wechat api。 |
kafka.eagle.im.wechat.touser | String | 卡夫卡鹰wechat touser。 | |
kafka.eagle.im.wechat.toparty | String | Kafka Eagle微信toparty。 | |
kafka.eagle.im.wechat.totag | String | Kafka Eagle wechat totag。 | |
kafka.eagle.im.wechat.agentid | String | Kafka Eagle wechat agentid。 |
sasl_PLAINTEXT:
Name | Default | Type | Describe |
---|---|---|---|
kafka.eagle.sasl.enable | false | boolean | Kafka Eagle禁用SASL_PLAINTEXT。 |
kafka.eagle.sasl.protocol | SASL_PLAINTEXT | String | Kafka Eagle SASL协议。 |
kafka.eagle.sasl.mechanism | PLAIN | String | Kafka Eagle SASL机制。 |
数据库配置:
mysql:在使用mysql时,先在对应数据库建立 ke db,表信息在启动监控时自动生成,一般使用mysql
kafka.eagle.driver | com.mysql.jdbc.Driver | String | Kafka Eagle数据库驱动程序。 |
---|---|---|---|
kafka.eagle.url | jdbc:mysql://127.0.0.1:3306/ke3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull | String | Kafka Eagle数据库网址。 |
kafka.eagle.username | root | String | Kafka Eagle数据库用户名。 |
kafka.eagle.password | 123456 | String | Kafka Eagle数据库密码。 |
SQLite:
kafka.eagle.driver | org.sqlite.JDBC | String | Kafka Eagle数据库驱动程序。 |
---|---|---|---|
kafka.eagle.url | jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db | String | Kafka Eagle数据库网址。 |
kafka.eagle.username | root | String | Kafka Eagle数据库用户名。 |
kafka.eagle.password | 123456 | String | Kafka Eagle数据库密码。 |
注:
① 监控趋势图:
当要开启可视化展示性能,需要开启kafka的JMX,通过JMX获取数据,监控Kafka客户端,生产端,消息数量,请求数量,处理时间和其他数据,以可视化性能。
kafka.eagle.metrics.charts=true 启用监控趋势图
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"
#export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
这里的端口不一定非要设置成9999,端口只有可用,均可。Kafka Eagle系统会自动获取这个JMX端口
② cluster1.kafka.eagle.offset.storage
如果你的offsets存储在Kafka中,这里就配置 # 属性值为kafka,如果是在Zookeeper中,可以注释该属性。一般情况下,Offsets的也和你消费者API有关系,如果你使用的Kafka版本为0.10.x以后的版本。
但是,你的消费API使用的是0.8.2.x 时的API,此时消费者依然是在Zookeeper中
三、启动kefka
①先给ke.sh 文件赋予执行权限
chmod +x $KE_HOME/bin/ke.sh
命令 | 说明 |
---|---|
ke.sh start | 启动Kafka Eagle系统 |
ke.sh stop | 停止Kafka Eagle系统 |
ke.sh restart | 重启Kafka Eagle系统 |
ke.sh status | 查看Kafka Eagle系统运行状态 |
ke.sh stats | 统计Kafka Eagle系统占用Linux资源情况 |
ke.sh find [ClassName] | 查看Kafka Eagle系统中的类是否存在 |
启动之后访问 对应http://host:port/ke进行访问
四、关于数据采集
Kafka Eagel 监控的消息数据源,来自于 Zookeeper。由于创建,修改或是消费 Kafka 的消息,都会在 Zookeeper 中进行注册,我们可以从中获取数据的变动,例如:Topic,Brokers,Partitions 以及 Group 等,Kafka 在 Zookeeper 的结构存储,如下图所示: