【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服务器的管理中轻松启动、重新启动和停止服务器,启动成功后的命令终端如下图所示:

相关推荐
Asthenia041243 分钟前
Spring扩展点与工具类获取容器Bean-基于ApplicationContextAware实现非IOC容器中调用IOC的Bean
后端
bobz9651 小时前
ovs patch port 对比 veth pair
后端
Asthenia04121 小时前
Java受检异常与非受检异常分析
后端
uhakadotcom1 小时前
快速开始使用 n8n
后端·面试·github
JavaGuide2 小时前
公司来的新人用字符串存储日期,被组长怒怼了...
后端·mysql
bobz9652 小时前
qemu 网络使用基础
后端
Asthenia04122 小时前
面试攻略:如何应对 Spring 启动流程的层层追问
后端
Asthenia04122 小时前
Spring 启动流程:比喻表达
后端
Asthenia04123 小时前
Spring 启动流程分析-含时序图
后端
ONE_Gua3 小时前
chromium魔改——CDP(Chrome DevTools Protocol)检测01
前端·后端·爬虫