首页 > 系统相关 >在Linux安装Kafka监控系统EFAK

在Linux安装Kafka监控系统EFAK

时间:2023-04-05 16:26:23浏览次数:59  
标签:echo EFAK efak kafka Linux eagle Kafka soft

前言

EFAK(Eagle For Apache Kafka)是一个简单、高性能的Kafka集群监控系统,实现了监控、可视化操作Topic/Zookeeper、SQL查询、告警等功能,它以前的名字叫Kafka Eagle。

我们重点看看如何安装以及简单使用它。

kafka 版本支持:0.8.2.x, 0.9.x, 0.10.x, 0.11.x, 1.x, 2.x.

支持平台:Mac OS X, Linux, Windows.

支持的JDK: JDK8+

安装步骤

下载解压

执行后下载目录是~/soft/kafka,可执行程序目录是/opt/soft/efak-web-2.0.8

echo "创建下载目录" > /dev/null
mkdir -p ~/soft/kafka

echo "下载到~/soft/kafka" > /dev/null
curl -o ~/soft/kafka/kafka-eagle-bin-2.0.8.tar.gz https://codeload.github.com/smartloli/kafka-eagle-bin/tar.gz/v2.0.8

echo "创建解压目录" > /dev/null
mkdir -p /opt/soft

echo "解压到当前目录,真正的包还在解压文件夹下" > /dev/null
tar -xf ~/soft/kafka/kafka-eagle-bin-2.0.8.tar.gz

echo "解压到/opt/soft" > /dev/null
tar -xf ~/soft/kafka/kafka-eagle-bin-2.0.8/efak-web-2.0.8-bin.tar.gz -C /opt/soft

编辑配置文件

我们这里演示只使用了必要的参数进行配置,详细配置参考Kafka-eagle - 配置文档。数据库得提前创建好。

需要注意的是cluster1.zk.list=配置的值需要跟Kafka配置文件server.properties中参数zookeeper.connect=配置得一样,包括后面的命名空间/kafka

echo "备份配置文件" > /dev/null
cp /opt/soft/efak-web-2.0.8/conf/system-config.properties /opt/soft/efak-web-2.0.8/conf/system-config.properties.bak

echo "覆盖配置文件为以下内容" > /dev/null
echo '
# Kafka使用的Zookeeper集群别名,多个集群用逗号分隔,后续针对不同集群配置都需要别名作前缀
efak.zk.cluster.alias=cluster1

# Kafka配置的Zookeeper集群客户端访问地址
cluster1.zk.list=node1:2181,node2:2181,node3:2181/kafka

# efak的Web界面访问端口
efak.webui.port=8048

# EFAK跟Zookeeper的最大连接数
kafka.zk.limit.size=25

# 开启metrics
efak.metrics.charts=true
# 保留时间15天
efak.metrics.retain=15

# kafka jmx uri
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi

# MySQL配置
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://192.168.2.33:3306/efak?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=pwd888888' > /opt/soft/efak-web-2.0.8/conf/system-config.properties

配置环境变量

环境变量在脚本中会使用到,所以必须配置下,也能简便我们命令行操作。

echo "追加环境变量KE_HOME" > /dev/null
echo '
export KE_HOME=/opt/soft/efak-web-2.0.8
export PATH=$PATH:$KE_HOME/bin' >> /etc/profile

echo "使环境变量生效" > /dev/null
source /etc/profile

服务启停等操作

使用bin目录下的脚本ke.sh实现所有操作,命令格式为ke.sh [选项]。选项有start|status|stop|restart|stats对应启动|服务状态|停止|重启|查看资源占用,参考 Kafka-eagle - shell。如:

echo "启动" > /dev/null
ke.sh start

控制台日志在logs/ke_console.out,是一个软链接指向了另一个真实日志路径。

image-20211203181033284

启动成功后控制台会打印出用户名密码和HTTP访问地址相关信息。要注意的是,启动失败也会打印出这些信息,所以得通过链接访问成功了才能判断启动没问题。

image-20211203182517382

配置Metrics

这个主要是为了开启Metrics和BScreen两个功能来实现Kafka消息的数量、请求的数量、处理时间等数据可视化。

这个功能是通过Java管理扩展(Java Management Extensions,JMX)实现监控的,参考Kafka-eagle - Metrics

EFAK配置文件system-config.properties需要配置下面相关参数。

# 开启metrics
efak.metrics.charts=true
# 保留时间15天
efak.metrics.retain=15

# kafka jmx uri
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi

开启Kafka的JMX功能,编辑Kafka启动脚本kafka-server-start.sh,修改if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then中的内容为如下,其实就是设置相关的JVM启动选项。其中JMX_PORT可以自定义,EFAK会自己发现。

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

image-20211206171105704

image-20211206171222122

Zookeeper版本3.5以上需要修改启动脚本zkServer.sh,在77行后添加以下内容。

ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"

image-20211206181917992

在【Cluster / ZK & Kafka】中可以看到Kafka节点,以及JMX相关信息,其中JMX Port设置成不一样它也自动发现了。

image-20211206175044537

简单使用

通过浏览器用IP+端口号(如:http://192.168.0.1:8048/)访问主页,需要用户名和密码登陆。相关信息在启动日志中都有给出。

image-20211206183349792

如果配置了Metrics,菜单栏中【Metrics】和【BScreen】都可以看到数据。

image-20211206183146419

image-20211206204826968

安装问题

内存不够

如果启动失败可以看日志来分析原因,比如我当时报错Cannot allocate memory,因为机器内存不够。

cat $KE_HOME/logs/ke_console.out

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000080000000, 2147483648, 0) failed; error='Cannot allocate memory' (errno=12)

而通过看启动脚本内容(ke.sh)发现启动的JVM选项中指定了堆内存大小为2G。

解决办法:将脚本中堆内存参数改小,或者增加服务器内存。

image-20211203181645722

看不到数据

【Dashboard】【ZK & Kafka】等功能没有数据。

image-20211206164928204

【Cluster / ZkCli】中也能看到ZK连接状态为DISCONNECTED

image-20211206164855345

通过日志可以看到类似下面的错误。通过错误提示在源码中定位后发现是因为kafka.zk.limit.size(EFAK跟Zookeeper的最大连接数)没有设置,初始化后连接池为0,所以报错。

ERROR [KafkaZKPoolUtils.http-nio-8048-exec-8] - Error initializing zookeeper, msg is

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:659)
at java.util.ArrayList.get(ArrayList.java:435)
at org.smartloli.kafka.eagle.common.util.KafkaZKPoolUtils.getZkClient(KafkaZKPoolUtils.java:128)

Kafka cluster[cluster1.zk.list] address has null.

Get all brokers info has error,msg is

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:659)
at java.util.ArrayList.get(ArrayList.java:435)
at org.smartloli.kafka.eagle.common.util.KafkaZKPoolUtils.getZkClient(KafkaZKPoolUtils.java:128)

解决办法:在EFAK配置文件system-config.properties中配置这个参数的值,比如像配置模板一样配置成25,然后重启服务即可。

参考

GitHub -EFAK

Kafka-eagle - 官网

Kafka-eagle - Install on Linux/macOS

Kafka-eagle - 下载页

Kafka-eagle - 配置文档

标签:echo,EFAK,efak,kafka,Linux,eagle,Kafka,soft
From: https://www.cnblogs.com/shuiyao3/p/17289628.html

相关文章

  • 在Linux安装Maven
    前言Linux系统安装、配置Maven步骤和相关资源地址,以3.8.2版本为例。安装下载解压#备用地址清华镜像https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gzecho"创建下载、编译目录">/dev/nullmkdir-p~/soft/......
  • Linux 基础
    Linux基础1.安装虚拟机网络类型#1.桥接模式 上网不需要经过其他路由,上网速度快,ip数量少,容易跟同一网段的主机ip冲突。 #2.仅主机模式 只能与宿主机进行交互,并不能上网。 #3.NAT模式 ip多,独立的网段。上网需要经过VMnet8网卡。下载虚拟机官网地址https://centos.org......
  • 在Linux安装JDK
    前言本文讲述在Linux服务器安装JDKrpm安装去Oracle官网下载.rpm格式的安装包,如Oracle-JDK8下载。也可以从CSDN-jdk-8u301-linux-x64.rpm.zip下载。echo"安装">/dev/nullrpm-ivhjdk-8u301-linux-x64.rpmecho"追加环境变量">/dev/nullecho'exportJA......
  • 在Linux安装Jenkins
    前言以Jenkins版本2.303作2例子在Linux系统直接安装的详细步骤,并解决插件下载速度慢问题。所有脚本可以直接复制在任意目录下执行。下载启动包echo"清华镜像下载启动war包到/opt/soft/jenkins目录">/dev/nullwget-P/opt/soft/jenkins--no-check-certificatehttps://mir......
  • Linux 系统快捷键
    1.linux路径#绝对路径从/开始称为绝对路径#相对路径从当前目录开始为相对路径2.特殊符号~命令行中表示当前的路径..命令行中表示上一级目录.命令行中表示当前的目录#代表了注释3.命令行快捷键ctrl+a快速移动光标到行首Homectrl+e快......
  • 用Yum在Linux安装MySQL8
    前言我们通过Yum几乎全自动的快速安装MySQL服务,这里演示的是8.0版本,给出了具体步骤、脚本、图例,和相关资料来源,以及解决远程连接相关问题。准备工作更换国内yum源提速参考CentOS更换YUM源更换yum源,国内下载速度更快。找MySQL官方yum仓库地址这一步只是告诉大家后面安装脚本......
  • linux-通配符
    Linux通配符主要用户模糊查找文件,常用的Linux通配符如下表所示:名称作用*可以匹配任意数量任意字符?可以匹配一个任意字符[]可以匹配括号中的任意一个字符[^]可以匹配指定范围之外的任意单个字符示例:[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9......
  • linux-命令替换
    命令替换是指将命令的标准输出作为值赋给某个变量,bashshell定义了两种语法进行命令替换。一种是使用反引号,另一种是利用啊$(),两种等价格式如下:`linux命令`$(linux命令)例一:echocurrentpathis`pwd`echocurrentpathis$(pwd)例二:#创建类似这样的文件file-2023-04-0......
  • Linux安装mysql数据库
    1.下载路径:https://dev.mysql.com/downloads/2.上传解压#tar-xvfMySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar3.安装#rpm-ivhMySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm--nodeps#rpm-ivhMySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm--no......
  • linux 查看内存使用情况命令
    查看所有盘符的使用情况:df-h查看各个用户使用的存储空间大小:du-sh/home/*查看当前目录总共占的容量,而不单独列出各个子项占用的容量:du-sh查看当前目录下一级子文件和子目录所占用的磁盘容量:du-lh--max-depth=1统计当前文件夹|目录大小,并按文件大小排序:du-sh*|sort......