Kafka-Eagle 框架可以监控 Kafka 集群的整体运行情况,在生产环境中经常使用。
1.1 MySQL 环境准备Kafka-Eagle 的安装依赖于 MySQL,MySQL 主要用来存储可视化展示的数据。如果集群中之前安装过 MySQL 可以跨过该步。
1.1.1 安装包准备- 将安装包和JDBC驱动上传到/opt/software/mysql,共计6个
01_mysql-community-common-5.7.16-1.el7.x86_64.rpm 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm mysql-connector-java-5.1.27-bin.jar
- 查看是否安装mysql
rpm -qa|grep mysql yum list installed mysql* Error: No matching Packages to list //如果出现以上则证明没有安装过
- 如果是阿里云服务器或者腾讯云服务器,按照如下步骤执行。
卸载MySQ依赖,虽然机器上没有装MySQL,但是这一步不可少
sudo yum remove mysql-libs
下载依赖并安装
sudo yum install libaio sudo yum -y install autoconf1.1.2 安装MySQL
- 安装MySQl依赖
sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
- 安装mysql-client客户端
sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
- 安装mysql-server
sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
注意:如果报如下错误,这是由于yum安装了旧版本的GPG keys所造成的,从rpm版本4.1以后,在安装或升级软件包时会自动检查软件包的签名。
解决办法:加上--force --nodeps。
sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm --force --nodeps sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm --force --nodeps
- 启动MySQl
sudo systemctl start mysqld
- 查看MySQl密码
sudo cat /var/log/mysqld.log | grep password1.1.3 配置MySQL
配置只需是root用户+密码,在任何主机上都能登录MySQL数据库
- 用刚刚查到的密码进入MySQL
mysql -uroot -p'这里放你的随机密码'
如果出现这样的错误
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
解决办法:
在/usr/lib64中寻找一个大于或者等于该依赖版本的依赖文件,我的是在/usr/lin64中找到了一个libncurses.so.6.1,然后建立一个软链接:
sudo ln -s 文件路径 快捷方式路径
sudo ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5
这样就在/usr/lib64下建立了一个libncurses.so.5的快捷方式。mysql在启动时就会寻找该libncurses.so.5依赖的快捷方式,最后实际链接到了libncurses.so.6.1依赖
然后再执行 mysql -u root -p 时就会通过。亲测完美解决!
可能再执行mysql -u root -p,会出现mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
原因:这时错误就改变了 缺少libtininfo.so.5
解决方法:同上
具体命令:
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
- 更改密码(密码建议第一位用英文字母大写 中间随意 最后再加一个符号,记得保存哦 这样的保密性高)
alter user user() identified by '你的新密码'; //设置密码永不过期 alter user 'root'@'localhost' password expire never; //刷新一下权限 flush privileges; //然后 exit
- 设置远程访问mysql
接下来 最重要 就是设置远程访问mysql 1.同样先登录(这样做的主要原因是可以测试刚刚的修改密码是否成功) mysql -uroot -p'你的新密码' 2.show databases; 3.来更改管理员信息 use mysql; 4.查询所有管理员 select user,host from user; mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | dhx | % | | root | % | | mysql.sys | localhost | +------------------+-----------+ 5 rows in set (0.00 sec) 以上是我修改后的 你们初始化的话 host 应该都是localhost 而且只有2个没有第一个 5.更新root用户的本地访问为%,即代表可以远程访问。通常情况下root用户应该只能本地访问,今天先拿他开刀 测试一下 update user set host='%' where user = 'root'; 6.设置完一定要刷新 flush privileges; 7.在查询一遍 即可看到root的host变为%了
- 正常清空下 到这一步已经结束了,但是由于我们如果直接用root来操作数据库,有些危险,所以我们可以添加一个子管理员.
1.添加用户为(你自己想) 密码(你自己想) 的子用户 create user '用户名'@'%' identified with mysql_native_password by '密码'; eg: create user 'demo1' @'%' identified with mysql_native_password by 'Demo123456!'; Query OK, 0 rows affected (0.01 sec) 2.设置demo1 这个用户可供远程访问,顺带刷新一下 grant all privileges on *.* to 'demo1'@'%' with grant option; mysql> grant all privileges on *.* to 'demo1'@'%' with grant option; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | demo1 | % | | dhx | % | | root | % | | mysql.sys | localhost | +------------------+-----------+ 6 rows in set (0.00 sec)1.2 Kafka 环境准备
- 关闭 Kafka 集群
kf.sh stop //关闭集群脚本 bin/kafka-server-stop.sh //单个服务器上的Kafka关闭 jps //查看是否关闭
- 修改/opt/module/kafka/bin/kafka-server-start.sh 命令中参数
vim bin/kafka-server-start.sh
修改如下参数值:
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" fi
为
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
注意:修改之后在启动 Kafka 之前要分发之其他节点
1.3 Kafka-Eagle 安装官网:https://www.kafka-eagle.org/
- 上传压缩包 kafka-eagle-bin-2.0.8.tar.gz 到集群/opt/software/kafka目录。
- 解压到本地
tar -zxvf kafka-eagle-bin-2.0.8.tar.gz
- 进入刚才解压的目录,将 efak-web-2.0.8-bin.tar.gz 解压至/opt/module
tar -zxvf efak-web-2.0.8-bin.tar.gz -C /opt/module/
- 修改名称
mv efak-web-2.0.8/ efak
- 修改配置文件 /opt/module/efak/conf/system-config.properties
vim system-config.properties //修改system-config.properties参数 efak.zk.cluster.alias=cluster1 cluster1.zk.list=127.0.0.1:2181 # offset 保存在 kafka cluster1.efak.offset.storage=kafka efak.driver=com.mysql.jdbc.Driver efak.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UT F-8&zeroDateTimeBehavior=convertToNull efak.username=root efak.password=123456
- 添加环境变量
sudo vi /etc/profile # kafkaEFAK export KE_HOME=/opt/module/efak export PATH=$PATH:$KE_HOME/bin
注意:source /etc/profile
source /etc/profile
- 启动
- 注意:启动之前需要先启动 ZK 以及 KAFKA。
kf.sh start //单个集群启动 bin/kafka-server-start.sh -daemon config/server.properties
- 启动 efak
bin/ke.sh start 如果报错
- 停止efak
bin/ke.sh stop1.4 Kafka-Eagle 页面操作
登录页面查看监控数据 :http://127.0.0.1:8048/



