1 Kafka-Eagle 监控
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 autoconf
1.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 password
1.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"
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
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
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
bin/ke.sh start
如果报错
bin/ke.sh stop
1.4 Kafka-Eagle 页面操作
登录页面查看监控数据 :http://127.0.0.1:8048/
|