【Kafka系列】Mac OS 安装Kafka Eagle

【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。

接下来,按照以下步骤进行二进制安装包的提取和安装:

  1. 进入指定目录:
bash 复制代码
cd /usr/java
  1. 解压缩二进制安装包到该目录:

    tar -zxvf jdk-xxxx.tar.gz

  2. 将解压后的文件夹重命名为jdk1.8:

bash 复制代码
mv jdk-xxxx jdk1.8
  1. 使用文本编辑器编辑/etc/profile文件:
bash 复制代码
vi /etc/profile
  1. 在/etc/profile文件中添加以下内容:
bash 复制代码
export JAVA_HOME=/usr/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
  1. 最后,使用以下命令使配置立即生效:
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 目录中,执行以下步骤:

  1. 解压缩安装包:
python 复制代码
tar -zxvf efak-xxx-bin.tar.gz
  1. 如果之前已经安装了旧版本,首先删除旧版本:
bash 复制代码
rm -rf efak
  1. 然后将当前版本的文件夹重命名为 efak,如下所示:
bash 复制代码
mv efak-xxx efak
  1. 接下来,配置EFAK的环境变量,在/etc/profile文件中进行编辑:
bash 复制代码
vi /etc/profile
  1. 在/etc/profile文件中添加以下内容:
bash 复制代码
export KE_HOME=/data/soft/new/efak
export PATH=$PATH:$KE_HOME/bin
  1. 最后,使用以下命令使配置立即生效:
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服务器的管理中轻松启动、重新启动和停止服务器,启动成功后的命令终端如下图所示:

相关推荐
2401_882727573 小时前
低代码配置式组态软件-BY组态
前端·后端·物联网·低代码·前端框架
追逐时光者4 小时前
.NET 在 Visual Studio 中的高效编程技巧集
后端·.net·visual studio
大梦百万秋5 小时前
Spring Boot实战:构建一个简单的RESTful API
spring boot·后端·restful
斌斌_____5 小时前
Spring Boot 配置文件的加载顺序
java·spring boot·后端
路在脚下@5 小时前
Spring如何处理循环依赖
java·后端·spring
海绵波波1076 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
小奏技术7 小时前
RocketMQ结合源码告诉你消息量大为啥不需要手动压缩消息
后端·消息队列
AI人H哥会Java9 小时前
【Spring】控制反转(IoC)与依赖注入(DI)—IoC容器在系统中的位置
java·开发语言·spring boot·后端·spring
凡人的AI工具箱9 小时前
每天40分玩转Django:Django表单集
开发语言·数据库·后端·python·缓存·django
奔跑草-9 小时前
【数据库】SQL应该如何针对数据倾斜问题进行优化
数据库·后端·sql·ubuntu