Kafka监控工具KafkaOffsetMonitor配置及使用
一、KafkaOffsetMonitor简述
KafkaOffsetMonitor是Kafka的一款客户端消费监控工具,用来实时监控Kafka服务的Consumer以及它们所在的Partition中的Offset,我们可以浏览当前的消费者组,并且每个Topic的所有Partition的消费情况都可以一目了然。
二、KafkaOffsetMonitor下载
KafkaOffsetMonitor托管在Github上,可以通过Github下载。
下载地址:https://github.com/quantifind/KafkaOffsetMonitor/releases
或者下载百度网盘:链接:https://pan.baidu.com/s/1geEBEvT 密码:jaeu
三、KafkaOffsetMonitor启动
将下载下来的KafkaOffsetMonitor jar包上传到linux上,可以新建一个目录KafkaMonitor,用于存放KafkaOffsetMonitor-assembly-0.2.0.jar进入到KafkaMonitor目录下,通过java编译命令来运行这个jar包:
[root@kafka50 KafkaMonitor]# java -cp KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk 10.0.0.50:12181,10.0.0.60:12181,10.0.0.70:12181 --port 8088 --refresh 5.seconds --retain 1.days 按回车后,可以看到控制台输出:serving resources from: jar:file:/data/KafkaMonitor/KafkaOffsetMonitor-assembly-0.2.0.jar!/offsetapp SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 2018-01-05 21:17:36.267:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkConnection). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 2018-01-05 21:17:36.630:INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,jar:file:/data/KafkaMonitor/KafkaOffsetMonitor-assembly-0.2.0.jar!/offsetapp} 2018-01-05 21:17:36.662:INFO:oejs.AbstractConnector:Started SocketConnector@0.0.0.0:8088
如果没有指定端口,则默认会开启一个随机端口。
参数说明:zk :zookeeper主机地址,如果有多个,用逗号隔开 port :应用程序端口 refresh :应用程序在数据库中刷新和存储点的频率 retain :在db中保留多长时间 dbName :保存的数据库文件名,默认为offsetapp
为了更方便的启动KafkaOffsetMonitor,可以写一个启动脚本来直接运行,我这里新建一个名为:kafka-monitor-start.sh的脚本,然后编辑这个脚本:
[root@kafka50 KafkaMonitor]# vim kafka-monitor-start.sh java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -cp KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb \ --port 8088 \ --zk 10.0.0.50:12181,10.0.0.60:12181,10.0.0.70:12181 \ --refresh 5.minutes \ --retain 1.day >/dev/null 2>&1;
然后退出保存即可,接下来修改一下kafka-monitor-start.sh的权限
[root@kafka50 KafkaMonitor]# chmod +x kafka-monitor-start.sh
启动KafkaOffsetMonitor:
[root@kafka50 KafkaMonitor]# nohup /data/KafkaMonitor/kafka-monitor-start.sh & [1] 6551 [root@kafka50 KafkaMonitor]# lsof -i:8088 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 6552 root 16u IPv6 26047 0t0 TCP *:radan-http (LISTEN)
四、KafkaOffsetMonitor Web UI
在游览器中输入:http://ip:port即可以查看KafkaOffsetMonitor Web UI,如下图:
在下图中有一个Visualizations选项卡,点击其中的Cluster Overview可以查看当前Kafka集群的Broker情况
五、简单的Producer
1、新建一个Topic
首先为本次试验新建一个Topic,命令如下:
bin/kafka-topics.sh \--create \--zookeeper 10.0.0.50:12181 \--replication-factor 3 \--partition 3 \--topic kafkamonitor-simpleproducer
2、新建SimpleProducer代码
在上一篇文章中提到的Producer封装Github代码的基础上,写了一个往kafkamonitor-simpleproducer发送message的java代码。
import com.ckm.kafka.producer.impl.KafkaProducerToolImpl; import com.ckm.kafka.producer.inter.KafkaProducerTool;/*** Created by ckm on 2016/8/30.*/ public class SimpleProducer {public static void main(String[] args) {KafkaProducerTool kafkaProducerTool = new KafkaProducerToolImpl();int i = 0;String message = "";while (true) {message = "test-simple-producer : " + i ++;kafkaProducerTool.publishMessage("kafkamonitor-simpleproducer", message);}} }
程序运行效果:
3、ConsoleConsumer消费该topic
用kafka自带的ConsoleConsumer消费kafkamonitor-simpleproducer中的message。
bin/kafka-console-consumer.sh --zookeeper m000:2181 --from-beginning --topic kafkamonitor-simpleproducer
消费截图如下:
4、KafkaOffsetMonitor页面
(1)在Topic List选项卡中,我们可以看到刚才新建的kafkamonitor-simpleproducer
(2)点开后,能看到有一个console-consumer正在消费该topic
(3)继续进入该Consumer,可以查看该Consumer当前的消费状况
这张图片的左上角显示了当前Topic的生产速率,右上角显示了当前Consumer的消费速率。
图片中还有三种颜色的线条,蓝色的表示当前Topic中的Message数目,灰色的表示当前Consumer消费的offset位置,红色的表示蓝色灰色的差值,即当前Consumer滞后于Producer的message数目。
(4)看一眼各partition中的message消费情况
从上图可以看到,当前有3个Partition,每个Partition中的message数目分布很不均匀。这里可以与接下来的自定义Producer的情况进行一个对比。
六、自定义Partitioner的Producer
1、新建一个Topic
bin/kafka-topics.sh \--create \--zookeeper 10.0.0.50:12181 \--replication-factor 3 \--partition 3 \--topic kafkamonitor-partitionedproducer
2、Partitioner代码
逻辑很简单,循环依次往各Partition中发送message。
import kafka.producer.Partitioner;/*** Created by ckm on 2018/1/8.*/ public class TestPartitioner implements Partitioner {public TestPartitioner() {}@Overridepublic int partition(Object key, int numPartitions) {int intKey = (int) key;return intKey % numPartitions;} }
3、Producer代码
将自定义的Partitioner设置到Producer,其他调用过程和二中类似。
import com.ckm.kafka.producer.impl.KafkaProducerToolImpl; import com.ckm.kafka.producer.inter.KafkaProducerTool;/*** Created by ckm on 2016/8/30.*/ public class PartitionedProducer {public static void main(String[] args) {KafkaProducerTool kafkaProducerTool = new KafkaProducerToolImpl();kafkaProducerTool.getProducerProperties().put("partitioner.class", "TestPartitioner");int i = 0;String message = "";while (true) {message = "test-partitioner-producer : " + i;System.out.println(message);kafkaProducerTool.publishPartitionedMessage("kafkamonitor-partitionedproducer", i + "", message);i ++;}} }
代码运行效果如下图:
4、ConsoleConsumer消费Message
bin/kafka-console-consumer.sh --zookeeper 10.0.0.50:12181 --from-beginning --topic kafkamonitor-partitionedproducer
消费效果如下图:
5、KafkaOffsetMonitor页面
其他页面与上面的类似,这里只观察一下每个partition中的message数目与第二节中的对比。可以看到这里每个Partition中message分别是很均匀的。
注意事项:
注意这里有一个坑,默认情况下Producer往一个不存在的Topic发送message时会自动创建这个Topic。由于在这个封装中,有同时传递message和topic的情况,如果调用方法时传入的参数反了,将会在Kafka集群中自动创建Topic。在正常情况下,应该是先把Topic根据需要创建好,然后Producer往该Topic发送Message,最好把Kafka这个默认自动创建Topic的功能关掉。
那么,假设真的不小心创建了多余的Topic,在删除时,会出现“marked for deletion”提示,只是将该topic标记为删除,使用list命令仍然能看到。如果需要调整这两个功能的话,在server.properties中配置如下两个参数:
参数 | 默认值 | 作用 |
---|---|---|
auto.create.topics.enable | true | Enable auto creation of topic on the server |
delete.topic.enable | false | Enables delete topic. Delete topic through the admin tool will have no effect if this config is turned off |
七,KafkaOffsetMonitor 总结
KafkaOffsetMonitor:程序一个jar包的形式运行,部署较为方便。只有监控功能,使用起来也较为安全。
除了KafkaOffsetMonitor,Kafka监控工具还有另外两款:
Kafka Web Console:监控功能较为全面,可以预览消息,监控Offset、Lag等信息,但存在bug,不建议在生产环境中使用。
Kafka Manager:偏向Kafka集群管理,若操作不当,容易导致集群出现故障。对Kafka实时生产和消费消息是通过JMX实现的。没有记录Offset、Lag等信息。
转载于:https://www.cnblogs.com/dadonggg/p/8242682.html
Kafka监控工具KafkaOffsetMonitor配置及使用相关推荐
- Kafka系列之-Kafka监控工具KafkaOffsetMonitor配置及使用
KafkaOffsetMonitor是一个可以用于监控Kafka的Topic及Consumer消费状况的工具,其配置和使用特别的方便.源项目Github地址为:https://github.com/q ...
- ELK5.3+Kafka集群配置
[一]资源准备 # 3台4C*8G, 安装Zookeeper.Kafka.Logstash--Broker(input: filebeat; output: Kafka) 10.101.2.23 10 ...
- 汽车位置服务之kafka集群配置注意事项
1) 重复消费问题. 问题描述 采用kafka读取消息进行处理时,consumer会重复读取afka队列中的数据. 问题原因 kafka的consumer消费数据时首先会从broker里读取一批 ...
- Kafka教程(安装/配置/开发/面试题)
[rabbitmq教程]https://bigbird.blog.csdn.net/article/details/81436980 [Flink教程]https://blog.csdn.net/he ...
- kafka集群配置(三台机器)
前提:kafka基于zookeeper配置 解压安装包 ###将压缩包压缩到指定位置tar -zxvf kafka_2.11-1.01.tgz -C /usr/local/src/ 改名 mv kaf ...
- kafka安装及配置过程
来来先扫一下,一码不扫何以扫天下 简介 Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目.Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量, ...
- linux环境kafka安装及配置
linux环境kafka下载安装 下载资源 安装zookeeper kafka安装及配置 kafka安装(单体) kafka集群配置方式 kafka开启kerberos认证 kafka自带zookee ...
- 小木大数据-kafka安装及配置
kafka安装及配置 大家好,今天我要给大家介绍一下kafka的安装及配置的方式. 首先介绍一下什么叫kafka.Kafka是一个发布订阅消息系统,它的用途小木我理解的是,我们有一个温度传感器,然后k ...
- Kafka监控KafkaOffsetMonitor【转】
1.概述 前面给大家介绍了Kafka的背景以及一些应用场景,并附带上演示了Kafka的简单示例.然后,在开发的过程当中,我们会发现一些问题,那就是消息的监控情况.虽然,在启动Kafka的相关服务后,我 ...
最新文章
- AndroidStudio-4-如何导入项目
- 训练图像预处理函数功能(paddle)
- 【推导】计蒜客17119 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function
- 让数据大白于天下:GCC插件实现代码分析和安全审计
- 3D打印软件推荐|常用3D打印软件有哪些?
- 全国各省份简称、省会、经纬度
- 代理内网穿透-Lcx.exe-venom-proxychains
- JavaScript轻应用网络模块介绍
- Tkinter保姆级教程(上)
- 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-29期...
- 众人皆阳我独阴,分享与小阳人共同生活一周体验!
- 哪些东西买了之后,会让人因生活质量和幸福感提升而感觉相见恨晚?
- Linux fsck命令详解
- NING的2021年复盘
- react 前端实现打印发票/图片
- batch manufacturing problem
- HTML中基本元素基本设置(例如:字体颜色、大小、背景颜色)。
- Linux 服务器之间互信
- 唯美云海高清动态壁纸分享
- git设置当前项目的用户名称name和邮箱email
热门文章
- HDU 1398 Square Coins
- 滑动门和翻转门实现的横竖双tab标签测试页面(附源码)
- 计算机和打印机的耗材管理,打印设备耗材余量知多少?多种途径实时掌握
- es6 ik分词热更新MySQL_rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
- python实现均值滤波_python如何实现均值滤波?
- dataframe两个表合并_史上代码最少的工作表拆分,仅需5行,不可思议
- 5、计算机图形学——着色与光照模型
- 9.QT事件机制源码时序分析(上)
- 经典角点检测算法实现
- 求非线性方程组的最小二乘解的广义逆法C实现