【Kafka系列】Mac OS 安装Kafka Eagle
欢迎关注,分享更多原创技术内容~
微信公众号:ByteRaccoon、知乎:一只大狸花啊、稀土掘金:浣熊say
微信公众号海量Java、数字孪生、工业互联网电子书免费送~
Kafka Eagle简介
Kafka Eagle 是一款开源工具,专门用于监控和管理 Apache Kafka 集群。它提供了一系列功能,帮助用户更轻松地维护他们的 Kafka 环境。首先,Kafka Eagle 提供实时监控功能,让你能够迅速了解 Kafka 集群的运行状态,包括关键性能指标、生产者和消费者的状态以及健康状况。这有助于及时发现潜在问题。
此外,Kafka Eagle 还支持警报和通知功能,允许你设置警报规则,以便在出现问题或性能下降时接收通知。这确保了你可以快速采取行动来解决问题。工具还提供历史数据分析,帮助用户了解性能趋势和历史数据,为性能分析提供了强有力的工具。
Kafka Eagle 还提供消费者监控功能,帮助你监测 Kafka 消费者组的状态和偏移量,确保数据正确处理和消费。此外,它具有管理功能,允许你创建、删除和修改 Kafka 主题、分区和配置等。
其用户界面直观易用,提供了图形化的仪表板和报告,让你更轻松地理解 Kafka 集群的状态和性能。Kafka Eagle 还支持多集群监控,适用于跨多个环境或数据中心的部署。最重要的是,它是开源的,可以根据需求进行自定义和扩展,为 Kafka 集群的可用性和性能提供了强大的工具。总之,Kafka Eagle 是 Kafka 生态系统中不可或缺的工具之一,用于简化监控、管理和维护你的 Kafka 集群。
下载
下载地址:www.kafka-eagle.org/
Kafka-Eagle并未提供任何平台的客户端,需要程序员在本地运行手动运行Kafka-Eagle的Web服务,第一步我们先在官网下载Kafka-Eagle的安装包。
安装JDK 如果Linux服务器上已经安装了JDK环境,可以跳过此步骤,继续执行后续安装步骤。如果没有安装JDK,首先需要前往Oracle官方网站下载JDK。
接下来,按照以下步骤进行二进制安装包的提取和安装:
- 进入指定目录:
bash
cd /usr/java
-
解压缩二进制安装包到该目录:
tar -zxvf jdk-xxxx.tar.gz
-
将解压后的文件夹重命名为jdk1.8:
bash
mv jdk-xxxx jdk1.8
- 使用文本编辑器编辑/etc/profile文件:
bash
vi /etc/profile
- 在/etc/profile文件中添加以下内容:
bash
export JAVA_HOME=/usr/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
- 最后,使用以下命令使配置立即生效:
bash
source /etc/profile
如果权限不足,可以使用sudo命令来执行上述操作。
最后,输入java -version,应该会显示如下信息:
scss
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
这表示JDK已成功安装并配置。
- 注意:在macos平台下/etc/profile目录一般是只读的,导致我们无法修改该文件的内容,除了采用sudo来强制修改之外,我们也可以将配置信息写入到~/.bashrc中,配置完成后使用source ~/.bashrc来使其生效。
解压EFAK
在这里,我们将二进制安装包解压到 /data/soft/new 目录中,执行以下步骤:
- 解压缩安装包:
python
tar -zxvf efak-xxx-bin.tar.gz
- 如果之前已经安装了旧版本,首先删除旧版本:
bash
rm -rf efak
- 然后将当前版本的文件夹重命名为 efak,如下所示:
bash
mv efak-xxx efak
- 接下来,配置EFAK的环境变量,在/etc/profile文件中进行编辑:
bash
vi /etc/profile
- 在/etc/profile文件中添加以下内容:
bash
export KE_HOME=/data/soft/new/efak
export PATH=$PATH:$KE_HOME/bin
- 最后,使用以下命令使配置立即生效:
bash
source /etc/profile
这样,EFAK的配置就生效了。这些步骤会将EFAK安装到指定目录并设置必要的环境变量,以确保它可以顺利运行。
- 注意:在macos平台下/etc/profile目录一般是只读的,导致我们无法修改该文件的内容,除了采用sudo来强制修改之外,我们也可以将配置信息写入到~/.bashrc中,配置完成后使用source ~/.bashrc来使其生效。
配置EFAK
根据自己的Kafka集群实际情况进行EFAK的配置,例如,Zookeeper地址、Kafka集群的版本类型(低版本使用zk,高版本使用kafka)、启用了安全认证的Kafka集群等,以下是一份完整的Kafka配置文件,设置该配置文件在$KE_HOME/conf/system-config.properties文件当中。
ini
# 多个Zookeeper&Kafka集群列表 -- 在这里设置Zookeeper集群的客户端连接地址
efak.zk.cluster.alias=cluster1,cluster2
cluster1.zk.list=tdn1:2181,tdn2:2181,tdn3:2181
cluster2.zk.list=xdn1:2181,xdn2:2181,xdn3:2181
# 添加Zookeeper访问控制列表
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123
# Kafka Broker节点在线列表
cluster1.efak.broker.size=10
cluster2.efak.broker.size=20
# Zkcli限制 -- Zookeeper集群允许连接的客户端数目
# 如果启用分布式模式,可以设置为4或8
kafka.zk.limit.size=8
# EFAK WebUI端口 -- Web控制台端口访问地址
efak.webui.port=8048
######################################
# EFAK启用分布式模式
######################################
efak.distributed.enable=false
# 主工作节点设置为主节点,其他节点设置为从节点
efak.cluster.mode.status=slave
# 部署EFAK服务器地址
efak.worknode.master.host=localhost
efak.worknode.port=8085
# Kafka偏移量存储 -- 偏移量存储在Kafka集群中,如果存储在Zookeeper中,可以不使用此选项
cluster1.efak.offset.storage=kafka
cluster2.efak.offset.storage=kafka
# 是否启用Kafka性能监控图表
efak.metrics.charts=false
# 默认情况下,EFAK保存数据30天
efak.metrics.retain=30
# 如果发生偏移量超出范围的情况,启用此属性 -- 仅适用于Kafka SQL
efak.sql.fix.error=false
efak.sql.topic.records.max=5000
# 删除Kafka主题令牌 -- 设置为删除主题令牌,以便管理员有权删除主题
efak.topic.token=keadmin
# Kafka SASL认证
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=SCRAM-SHA-256
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
# 如果不设置,该值可以为空
cluster1.efak.sasl.client.id=
# 添加Kafka集群CGroups
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics=kafka_ads01,kafka_ads02
cluster2.efak.sasl.enable=true
cluster2.efak.sasl.protocol=SASL_PLAINTEXT
cluster2.efak.sasl.mechanism=PLAIN
cluster2.efak.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";
cluster2.efak.sasl.client.id=
cluster2.efak.sasl.cgroup.enable=false
cluster2.efak.sasl.cgroup.topics=kafka_ads03,kafka_ads04
# 默认使用SQLite存储数据
efak.driver=org.sqlite.JDBC
# 重要提示:'/hadoop/kafka-eagle/db'路径必须存在。
efak.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
efak.username=root
efak.password=smartloli
# (可选)设置MySQL地址
# efak.driver=com.mysql.jdbc.Driver
# efak.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
# efak.username=root
# efak.password=smartloli
以上配置文件中我们需要关注的主要是2个部分:
- Zookeeper&Kafka集群列表配置,我这里只有一个zookeeper管理的Kafka集群,所以设置成如下所示:
ini
efak.zk.cluster.alias=cluster1
cluster1.zk.list=42.193.22.180:2181
- 设置SQLite作为数据存储
使用SQLite作为数据存储,必须保证/hadoop/kafka-eagle/db是存在的,但是在Mac系统中这个路径是受保护的,因此不建议使用SQLite作为数据存储
ini
efak.driver=org.sqlite.JDBC
# 重要提示:'/hadoop/kafka-eagle/db'路径必须存在。
efak.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
efak.username=root
efak.password=smartloli
- 使用MySQL作为数据存储
这里需要注意的是,我们需要先在指定的数据库中创建数据库ke,kafka-eagle会帮我们自动创建相关的表。
ini
efak.driver=com.mysql.jdbc.Driver
efak.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=smartloli
启动服务
在 $KE_HOME/bin 目录中,存在一个名为 ke.sh 的脚本文件。执行以下启动命令:
- 进入 ${KE_HOME}/bin 目录:
bash
cd ${KE_HOME}/bin
- 赋予脚本执行权限:
bash
chmod +x ke.sh
- 启动 EFAK 服务器:
bash
./ke.sh start
之后,当需要重新启动或停止 EFAK 服务器时,执行以下命令:
- 重新启动:
bash
./ke.sh restart
- 停止:
arduino
./ke.sh stop
这些命令允许你在EFAK服务器的管理中轻松启动、重新启动和停止服务器,启动成功后的命令终端如下图所示: