1.概述

最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题。并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑,同时也给出一些定位分析Kafka Eagle异常的时的解决办法。

2.内容

2.1 背景

在使用Kafka Eagle监控系统之前,笔者简单的介绍一下这款工具的用途。Kafka Eagle监控系统是一款用来监控Kafka集群的工具,目前更新的版本是v1.2.3,支持管理多个Kafka集群、管理Kafka主题(包含查看、删除、创建等)、消费者组合消费者实例监控、消息阻塞告警、Kafka集群健康状态查看等。目前Kafka Eagle v1.2.3整个系统所包含的功能,这里笔者给绘制成了一个图,结果如下图所示:

2.2 安装

接下来,我们开始安装Kafka Eagle系统,安装之前,我们需要准备好Kafka Eagle安装包。这里有2种方式:

  • 下载编译好的安装包
  • 下载源代码,然后自行编译安装

下面分别介绍这2种方式。

2.2.1 直接下载安装包

可以直接访问Kafka Eagle安装包下载地址:http://download.smartloli.org/,然后点击下载按钮,等待下载完成即可。下载界面如下图所示:

2.2.2 下载源代码,自行编译安装

Kafka Eagle系统的源代码托管在Github上,大家可以访问https://github.com/smartloli/kafka-eagle来获取源代码。Kafka Eagle源代码是由Maven工程来管理的,所以,在编译Kafka Eagle源代码之前,需要在本地开发环境中准备好你的Maven环境。

Maven安装比较简单,这里给大家介绍安装Maven的步骤:

# 步骤1:下载Maven安装包
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz # 步骤2:解压Maven安装包
tar -zxvf apache-maven-3.5.-bin.tar.gz # 步骤3:重命名并移动到指定位置
mv apache-maven-3.5. /usr/local/maven # 步骤4:配置Maven环境编辑
vi ~/.bash_profile export M2_HOME=/usr/local/maven
export PATH=$PATH:$M2_HOME/bin # 步骤5:执行source命令让环境变量立即生效
source ~/.bash_profile # 步骤6:验证Maven是否安装成功
mvn -v # 如果能打印Maven版本信息,则安装成功

然后,进入到Kafka Eagle源代码根目录,在根目录中有一个build.sh的脚本,执行该脚本进行源代码编译。编译成功后,控制台会打印相关信息,如下图所示:

2.2.3 配置Kafka Eagle

准备好Kafka Eagle安装包后,接下来我们就可以进行安装了。其实,Kafka Eagle的安装是很简单的,当初设计这个系统就是遵循简单、易用的原则来的。但是,很多同学在安装的过程当中却遇到了很多各式各样的问题。其实,在官方使用手册的安装一节中,介绍的也很详细。官方使用手册地址:http://ke.smartloli.org/ 文档托管在Gitbook,这里需要注意的是,可能有些同学反馈说访问不了,如果网络有波动,偶尔可能需要使用代理来访问。

接下来,我们就开始配置Kafka Eagle系统,步骤如下:

1. 配置JAVA_HOME和KE_HOME

由于源代码核心实现采用的是Java语言,所以需要配置JDK环境,建议采用JDK8以上。配置内容如下:

vi ~/.bash_profile
export JAVA_HOME=/usr/local/jdk8
export KE_HOME=/data/soft/new/kafka-eagle export PATH=$PATH:$JAVA_HOME/bin:$KE_HOME/bin

然后,执行source ~/.bash_profile命令让命令立即生效。如果不配置环境变量,可能在启动Kafka Eagle脚本ke.sh时抛出如下异常,异常信息如下:

[-- ::] Error: The KE_HOME environment variable is not defined correctly.
[-- ::] Error: This environment variable is needed to run this program. [-- ::] Error: The JAVA_HOME environment variable is not defined correctly.
[-- ::] Error: This environment variable is needed to run this program.

2. 配置system-config.properties文件

该文件在$KE_HOME/conf/目录,配置内容如下:

######################################
# 配置多个Kafka集群所对应的Zookeeper
######################################
kafka.eagle.zk.cluster.alias=cluster1,cluster2
cluster1.zk.list=dn1:,dn2:,dn3:
cluster2.zk.list=tdn1:,tdn2:,tdn3: ######################################
# 设置Zookeeper线程数
######################################
kafka.zk.limit.size= ######################################
# 设置Kafka Eagle浏览器访问端口
######################################
kafka.eagle.webui.port= ######################################
# 如果你的offsets存储在Kafka中,这里就配置
# 属性值为kafka,如果是在Zookeeper中,可以
# 注释该属性。一般情况下,Offsets的也和你消
# 费者API有关系,如果你使用的Kafka版本为0..x
# 以后的版本,但是,你的消费API使用的是0.8.2.x
# 时的API,此时消费者依然是在Zookeeper中
######################################
cluster1.kafka.eagle.offset.storage=kafka
######################################
# 如果你的集群一个是新版本(0.10.x以上),
# 一个是老版本(0.8或0.9),可以这样设置,
# 如果都是新版本,那么可以将值都设置成kafka
######################################
cluster2.kafka.eagle.offset.storage=zookeeper ######################################
# 是否启动监控图表,默认是不启动的
######################################
kafka.eagle.metrics.charts=false ######################################
# 在使用Kafka SQL查询主题时,如果遇到错误,
# 可以尝试开启这个属性,默认情况下,不开启
######################################
kafka.eagle.sql.fix.error=false ######################################
# 邮件服务器设置,用来告警
######################################
kafka.eagle.mail.enable=false
kafka.eagle.mail.sa=
kafka.eagle.mail.username=
kafka.eagle.mail.password=
kafka.eagle.mail.server.host=
kafka.eagle.mail.server.port= ######################################
# 设置告警用户,多个用户以英文逗号分隔
######################################
kafka.eagle.alert.users=smartloli.org@gmail.com ######################################
# 超级管理员删除主题的Token
######################################
kafka.eagle.topic.token=keadmin ######################################
# 如果启动Kafka SASL协议,开启该属性
######################################
kafka.eagle.sasl.enable=false
kafka.eagle.sasl.protocol=SASL_PLAINTEXT
kafka.eagle.sasl.mechanism=PLAIN ######################################
# Kafka Eagle默认存储在Sqlite中,如果要使用
# MySQL可以替换驱动、用户名、密码、连接地址
######################################
#kafka.eagle.driver=com.mysql.jdbc.Driver
#kafka.eagle.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#kafka.eagle.username=root
#kafka.eagle.password= kafka.eagle.driver=org.sqlite.JDBC
kafka.eagle.url=jdbc:sqlite:/Users/dengjie/workspace/kafka-egale/db/ke.db
kafka.eagle.username=root
kafka.eagle.password=root

3. 启动Kafka Eagle

配置完成后,可以执行Kafka Eagle脚本ke.sh。如果首次执行,需要给该脚本赋予执行权限,命令如下:

chmod +x $KE_HOME/bin/ke.sh

在ke.sh脚本中,支持以下命令:

命令 说明
ke.sh start 启动Kafka Eagle系统
ke.sh stop 停止Kafka Eagle系统
ke.sh restart 重启Kafka Eagle系统
ke.sh status 查看Kafka Eagle系统运行状态
ke.sh stats 统计Kafka Eagle系统占用Linux资源情况
ke.sh find [ClassName] 查看Kafka Eagle系统中的类是否存在

3.预览

在反馈出现频率最多的问题,就是Consumer模块没有数据展示、趋势监控图没有数据、Kafka SQL查询Topic没有数据。下面围绕这3个问题来给大家演示,以及解释什么情况下出现这种情况。

3.1 Consumer模块展示

启动一个消费者程序,然后进入到Consumer模块,截图如下:

这里需要注意的时,Kafka在0.10.x之后的版本和之前的版本底层设计有了变化,在之前的版本消费者信息是存储在Zookeeper中的,在0.10.x版本之后,默认存储到了Kafka内部主题中,只保留了元数据信息存储在Zookeeper中,例如:Kafka Broker地址、Topic名称、分区等信息。

是不是我使用的是Kafka 0.10.x之后的版本(如0.10.0、1.0.x、1.x等),然后配置属性kafka.eagle.offset.storage=kafka,启动消费者,就可以看到消费者信息呢?不一定的,还有一个关键因素决定Kafka Eagle系统是否可以展示你消费者程序信息,那就是消费者API的使用。

如果你使用的Kafka 0.10.x之后的版本,然后消费者API也是使用的最新的写法,那么自然你的消费者信息会被记录到Kafka内部主题中,那么此时你设置kafka.eagle.offset.storage=kafka这个属性,Kafka Eagle系统可以完美展示你的消费者使用情况。

但是,如果你虽然使用的是Kafka 0.10.x之后的版本,但是你使用的消费者API还是0.8.2.x或是0.9.x时的写法,此时的消费者信息是会被记录到Zookeeper中进行存储,那么此时你需要设置kafka.eagle.offset.storage=zookeeper或者注释掉该属性,在访问Kafka Eagle系统就可以查看到你的消费者详情了。

3.2. 监控趋势图

Kafka系统默认是没有开启JMX端口的,所以Kafka Eagle的监控趋势图默认采用不启用的方式,即kafka.eagle.metrics.charts=false。如果需要查看监控趋势图,需要开启Kafka系统的JMX端口,设置该端口在$KAFKA_HOME/bin/kafka-server-start.sh脚本中,设置内容如下:

vi kafka-server-start.sh

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=""
#export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

需要注意的时,这里的端口不一定非要设置成9999,端口只有可用,均可。Kafka Eagle系统会自动获取这个JMX端口,采集结果如下:

3.3 Kafka SQL查询Topic

还有一部分同学在Kafka Eagle系统的SQL查询Topic时,会出现查询不到数据的情况。这里查询不到数据可能情况有多种,首先需要排除Kafka集群因素,确保Kafka集群运行正常,Topic能够正常访问,并且Topic中是有数据的。

在排除一些主观因素后,回到Kafka Eagle系统应用层面,如果出现这种问题,可以尝试开启属性kafka.eagle.sql.fix.error=true,这个属性默认是不开启的。正常情况下使用Kafka SQL查询Topic,返回结果如下图所示:

4.总结

另外,如果在使用Kafka Eagle系统中遇到其他问题,可以查看$KE_HOME/logs/ke_console.out日志来分析具体的异常信息,一般都会提示具体的错误,大家可以根据错误提示来进行解决。

5.结束语

这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

另外,博主出书了《Hadoop大数据挖掘从入门到进阶实战》,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。

Kafka监控系统Kafka Eagle剖析的更多相关文章

  1. Kafka监控系统Kafka Eagle:支持kerberos认证

    在线文档:https://ke.smartloli.org/ 作者博客:https://www.cnblogs.com/smartloli/p/9371904.html 源码地址:https://gi ...

  2. kafka监控系统

    Metrics-Java版的指标度量工具之一 Metrics-Java版的指标度量工具之二 JAVA Metrics 度量工具使用介绍1 JAVA Metrics度量工具 - Metrics Core ...

  3. 【转载】Apache Kafka监控之Kafka Web Console

    http://www.iteblog.com/archives/1084 Kafka Web Console是一款开源的系统,源码的地址在https://github.com/claudemamo/k ...

  4. Apache Kafka监控之Kafka Web Console

    Kafka Web Console:是一款开源的系统,源码的地址在https://github.com/claudemamo/kafka-web-console中.Kafka Web Console也 ...

  5. Kafka 集群消息监控系统:Kafka Eagle

    Kafka Eagle 1.概述 在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper ...

  6. KAFKA 监控管理界面 KAFKA EAGLE 安装

    概述 Kafka Eagle监控系统是一款用来监控Kafka集群的工具,目前更新的版本是v1.2.3,支持管理多个Kafka集群.管理Kafka主题(包含查看.删除.创建等).消费者组合消费者实例监控 ...

  7. DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优

    胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...

  8. 大众点评CAT开源监控系统剖析

    参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监控系统的设计与实现 深度剖析开源分布式监控CAT [分布式监控CAT] Client端源 ...

  9. 【转】大众点评CAT开源监控系统剖析

    https://www.cnblogs.com/yeahwell/p/cat.html 参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监 ...

随机推荐

  1. 关于LP Wizard生成Allegro封装无焊盘的解决方案

    最近在学Allegro,安装了软件后看网上说LP Wizard可以一键生成Allegro封装,就想去尝尝鲜.毕竟一直都是手动做封装,没怎么用过向导.但是按照网上教程用LP生成了一个封装,发现打开时没有 ...

  2. appium定位

    一.链接基本信息 二.在appium界面中 三,定位 三.通过ui automator viewer抓取手机页面元素,点击红框按钮会抓取当前手机界面app全部元素;路径在sdk>tools下面的 ...

  3. node08

    ---恢复内容开始--- 1.Axios 1)基于promise的HTTP库,可用在浏览器或nodejs中 2)使用方法: 在模块内使用需要挂载到Vue对象上: Vue.prototype.$axio ...

  4. 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)

    (2016年3月更:由于后来了解到GGTalk开源即时通讯系统,因此直接采用了该资源用于项目开发,在此对作者表示由衷的感谢!) —————————————————————————————————— 人 ...

  5. 1.9 From Native to HTML5

    The mobile technology has become more and more mature, and it has evolved from a ridiculous situatio ...

  6. Centos7-驱动小米WIFI做AP

    参考文章: http://blog.csdn.net/sumang_87/article/details/38168877 http://blog.csdn.net/hktkfly6/article/ ...

  7. Android 音视频开发(四):使用 Camera API 采集视频数据

    本文主要将的是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView.TextureView 来预览 Camera 数据,取到 NV21 的数据回调. 注: 需要权限 ...

  8. [Swift]LeetCode41. 缺失的第一个正数 | First Missing Positive

    Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2, ...

  9. [SQL]LeetCode181. 超过经理收入的员工 | Employees Earning More Than Their Managers

    SQL架构 Create table If Not Exists Employee (Id ), Salary int, ManagerId int) Truncate table Employee ...

  10. [Swift]LeetCode773. 滑动谜题 | Sliding Puzzle

    On a 2x3 board, there are 5 tiles represented by the integers 1 through 5, and an empty square repre ...