在Linux安装Kafka监控系统EFAK
文章目录
- 前言
- 安装步骤
- 下载解压
- 编辑配置文件
- 配置环境变量
- 服务启停等操作
- 配置Metrics
- 简单使用
- 安装问题
- 内存不够
- 看不到数据
- 参考
前言
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/kafkaecho "下载到~/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.8echo "创建解压目录" > /dev/null
mkdir -p /opt/softecho "解压到当前目录,真正的包还在解压文件夹下" > /dev/null
tar -xf ~/soft/kafka/kafka-eagle-bin-2.0.8.tar.gzecho "解压到/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.bakecho "覆盖配置文件为以下内容" > /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/profileecho "使环境变量生效" > /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
,是一个软链接指向了另一个真实日志路径。
启动成功后控制台会打印出用户名密码和HTTP访问地址相关信息。要注意的是,启动失败也会打印出这些信息,所以得通过链接访问成功了才能判断启动没问题。
配置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" ]; thenexport 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
Zookeeper版本3.5以上需要修改启动脚本zkServer.sh
,在77行后添加以下内容。
ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
在【Cluster / ZK & Kafka】中可以看到Kafka节点,以及JMX相关信息,其中JMX Port设置成不一样它也自动发现了。
简单使用
通过浏览器用IP+端口号(如:http://192.168.0.1:8048/)访问主页,需要用户名和密码登陆。相关信息在启动日志中都有给出。
如果配置了Metrics,菜单栏中【Metrics】和【BScreen】都可以看到数据。
安装问题
内存不够
如果启动失败可以看日志来分析原因,比如我当时报错Cannot allocate memory
,因为机器内存不够。
cat $KE_HOME/logs/ke_console.out
Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000080000000, 2147483648, 0) failed; error=‘Cannot allocate memory’ (errno=12)
而通过看启动脚本内容(ke.sh
)发现启动的JVM选项中指定了堆内存大小为2G。
解决办法:将脚本中堆内存参数改小,或者增加服务器内存。
看不到数据
【Dashboard】【ZK & Kafka】等功能没有数据。
【Cluster / ZkCli】中也能看到ZK连接状态为DISCONNECTED
。
通过日志可以看到类似下面的错误。通过错误提示在源码中定位后发现是因为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 - 配置文档
在Linux安装Kafka监控系统EFAK相关推荐
- 昊鼎王五:linux如何安装Mongodb监控系统之MSS-On-Prem?
#昊鼎王五:linux如何安装Mongodb监控系统之MSS-On-Prem? #Q.基础知识: Mongodb提供的MMS监控管理工具,是一个图形化的监控配置工具,界面非常友好,但是mongo-mm ...
- 国内大神开源 Kafka 监控系统Eagle 使用教程
转自:https://www.cnblogs.com/smartloli/p/9371904.html 1.概述 最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特 ...
- Linux安装rpc监控系统资源
Linux安装rpc监控系统资源 1.rpc服务需rsh的支持,一般情况下rsh已安装.rpm -qa rsh查看. 2.右键另存为http://heanet.dl.sourceforge.net/s ...
- linux下ganglia监控系统搭建,linux下ganglia监控系统搭建
Ganglia监控软件主要是用来监控系统性能的软件,如:cpu .mem.硬盘利用率, I/O负载.网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整.分配系统资源,提高系统整体性能起到 ...
- 如何快速搭建一个 linux 全方位资源监控系统并带有炫酷的表盘图形统计?
如何快速搭建一个 linux 全方位资源监控系统并带有炫酷的表盘图形统计? 使用prometheus.grafana或者zabbix 这些监控软件,也是非常不错的一个选择,但是还有更简单.更小巧的统计 ...
- 多分区装linux系统,Linux安装之多系统分区
Linux安装之多系统分区 发布时间:2007-09-12 16:08:30来源:红联作者:fortemedia 本文献给要安装多个Linux版本的朋友,如果只安装一个Linux那就不用看了,不过当做 ...
- 基于嵌入式Linux的测温系统,基于嵌入式Linux的图像监控系统
设计.发明的目的和基本思路.创新点.技术关键和主要技术指标 随着嵌入式技术的快速发展,产生了基于嵌入式系统的远程图像视频监控系统,为信息产业,管理行业.监控行业提供了快捷.高效.廉价的服务.丰富的网络 ...
- linux 安装监控系统,CentOS7安装性能监控系统
目录 系统描述. 开发环境. 开始之前. 安装influxdb数据库. 安装collectd 安装Grafana FAQ influxdb的web界面没反应. 系统描述 想打造 New Relic 那 ...
- linux下ganglia监控系统搭建,开源监控软件Ganglia 安装使用
1.ganglia简介 Ganglia 是一款为 HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的 gmond 守护进程来采集 ...
最新文章
- gitlab常用命令
- 13、Power Query-逆透视列的解析(上)
- [机器学习]回归--(Simple LR and Multiple LR)
- codeforces gym-101741 Subsequence Sum Queries 分治+离线
- 单线程写多线程读安全的结构体
- Sass @at-root 指令用法示例
- Cannot create PoolableConnectionFactory。创建连接池异常
- 第2章[2.5] Ext JS组件、容器与布局
- Linux之ssh-agent命令
- Python三十个常见的脚本汇总
- Understand(代码分析工具)的安装与使用教程
- 小程序实现下拉刷新功能
- 计算机语言处理器,计算机语言处理器
- 自助分析重新定义大宗商品交易
- 定期清理gitlab的备份监控gitlab备份
- 【黑马程序员】23种设计模式——UML图
- 核心交换机链路聚合、冗余、堆叠、热备份
- 王迪手机软件测试,王迪的作品集 - 新片场
- 垃圾回收与垃圾收集算法
- 百度下拉词+php,百度下拉词是如何生成的?
热门文章
- springMVC源码分析--HandlerMethod
- 面试题 7 :二叉树遍历-前序遍历(DLR),中序遍历(LDR),后序遍历(LRD)-Android端非递归实现
- GCN图卷积神经网络总结笔记
- 计算机所需要的数学基础知识,学计算机需要什么基础 数学不好能学计算机吗...
- 以OPC PowerTool 连接iFix与KEPWARE
- EF Power Tool 参数错误 HRESULT:0x80070057 (E_INVALIDARG)) 解决办法
- DDoS攻击、CC攻击
- 那些年用过的时间衰减函数
- DBMS_SQL的使用
- 【评测】Tecan品牌系列产品