SoftwareDevTest

Kafka RabbitMQ队列监控

2018-06-12  本文已影响164人  燕京博士

1.部署(后面补充)
官网有很详细的步骤可以参考。

2.启动
启动时,没有看到报错,但是实际没启动成功。最后,去到安装目录下面直接修改tomcat的启动参数,应该是虚拟机内存不够导致启动不成功。
/data/kafka-eagle-1.1.1/bin/ke.sh start
/data/kafka-eagle-1.1.1/bin/ke.sh stop
访问地址:http://192.168.244.201:8048/ke

3.使用
它有个很强大的功能就是类似sql查询,查询不同topic下面的message,可以根据partition、offset来过滤,还支持分页查询。


image image
###############################################################
1.下载KafkaOffsetMonitor-assembly-0.2.0.jar 网盘地址:http://pan.baidu.com/s/1eQgYZOA 密码:rd5y

2.在服务器上创建kafka-offset-console目录

3.把下载好的文件上传到刚刚创建的目录下

4.创建监控程序运行的产生的日志输出目录:/app/kafka-offset-console/logs

5.该jar文件已经包含所有UI所需的资源文件,用java命令运行该jar包即可,所以需要编写一个启动脚本

kafka-offset-console-start.sh:

[html] view plaincopy

<embed id="ZeroClipboardMovie_1" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="box-sizing: border-box; outline: 0px; word-break: break-all;">

<embed id="ZeroClipboardMovie_2" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent" style="box-sizing: border-box; outline: 0px; word-break: break-all;">

  1. !/bin/bash

  2. java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -cp KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk 192.168.1.100:2181,192.168.1.101:2181,192.168.1.102:2181 --port 8086 --refresh 10.seconds --retain 7.days 1>/app/kafka-offset-console/logs/stdout.log 2>/app/kafka-offset-console/logs/stderr.log &

6.授权执行权限:chmod +x kafka-offset-console-start.sh
7.启动KafkaOffsetMonitor监控程序:./kafka-offset-console-start.sh

8.截图演示

[图片上传失败...(image-149c83-1528783036553)]

topic:创建时topic名称
partition:分区编号
offset:表示该parition已经消费了多少条message
logSize:表示该partition已经写了多少条message
Lag:表示有多少条message没有被消费。
Owner:表示消费者
Created:该partition创建时间
Last Seen:消费状态刷新最新时间

image image

问题总结
1、当KafkaOffsetMonitor运行长时间之后,JVM内存可能不够,导致在页面上操作迟迟不能响应,需要调整JVM的大小。

Kafka支持的基本命令位于${KAFKA_HOME}/bin文件夹中,主要是kafka-topics.sh命令;Kafka命令参考页面: kafka-0.8.x-帮助文档

image

** -1. 查看帮助信息**

bin/kafka-topics.sh --help

image

-2. 创建Topic

bin/kafka-topics.sh --create --topic test0 --zookeeper 192.168.187.146:2181 --config max.message.bytes=12800000 --config flush.messages=1 --partitions 5 --replication-factor 1

--create: 指定创建topic动作

--topic:指定新建topic的名称

--zookeeper: 指定kafka连接zk的连接url,该值和server.properties文件中的配置项{zookeeper.connect}一样

--config:指定当前topic上有效的参数值,参数列表参考文档为: Topic-level configuration

--partitions:指定当前创建的kafka分区数量,默认为1个

--replication-factor:指定每个分区的复制因子个数,默认1个

image

-3. 查看当前Kafka集群中Topic的情况

bin/kafka-topics.sh --list --zookeeper 192.168.187.146:2181

image

-4. 查看对应topic的描述信息

bin/kafka-topics.sh --describe --zookeeper 192.168.187.146:2181 --topic test0

--describe: 指定是展示详细信息命令

--zookeeper: 指定kafka连接zk的连接url,该值和server.properties文件中的配置项{zookeeper.connect}一样

--topic:指定需要展示数据的topic名称

image

-5. Topic信息修改

bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --config max.message.bytes=128000
bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --delete-config max.message.bytes
bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --partitions 10
bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --partitions 3 ## Kafka分区数量只允许增加,不允许减少

image

-6. Topic删除

默认情况下Kafka的Topic是没法直接删除的,需要进行相关参数配置

bin/kafka-topics.sh --delete --topic test0 --zookeeper 192.168.187.146:2181

Note: This will have no impact if delete.topic.enable is not set to true.## 默认情况下,删除是标记删除,没有实际删除这个Topic;如果运行删除Topic,两种方式:
方式一:通过delete命令删除后,手动将本地磁盘以及zk上的相关topic的信息删除即可
方式二:配置server.properties文件,给定参数delete.topic.enable=true,重启kafka服务,此时执行delete命令表示允许进行Topic的删除

黑窗口的kafka集群没有监控,可以使用三方开源的监控工具,查询了些资料,网上流传最多的有三个监控工具:

  1. Kafka Web Conslole
  2. Kafka Manager
  3. KafkaOffsetMonitor

先补一张生产数据(28个patition,不算冗余的数据 一天大概200G):

这里写图片描述

根据网友的实践:

Kafka Web Conslole

程序运行后,会定时去读取kafka集群分区的日志长度,读取完毕后,连接没有正常释放,一段时间后产生大量的socket连接,导致网络堵塞,所以不建议使用。

Kafka Manager

雅虎开源的一个监控工具,可以用来监控多个集群。

KafkaOffsetMonitor

相对上面来说,这个工具耦合性比较低,单用于监控比较适合而且部署很简单。
这里也介绍了下安装步骤,本来很简单的,但是版本不兼容,导致需要自己编译,然后记录下踩的坑。。。

(注意:kafka新的版本offset存储在自己的一个topic,不像老版本是存在zookeeper里面,所以用KafkaOffsetMonitor2.x的版本监控会有问题,根本监控不到数据,所以最好在github上面下载最新的版本自己编译,注意jdk版本)

我们使用KafkaOffsetMonitor监控工具

下载软件包:
github地址(0.2.1版本):点击下载

如果下载不懂,我已经上传了我的百度云:0.2.0版本0.2.1版本

这个是用assembly插件直接把所有包打到了一个jar里面,上传服务器,直接启动就行,特别方便。

上传jar包到服务器,然后创建一个kafka监控的目录

mkdir /mydata/kafkamonitorlogs

执行如下语句启动kafka监控

java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -cp KafkaOffsetMonitor-assembly-0.2.1.jar \
     com.quantifind.kafka.offsetapp.OffsetGetterWeb \
     --zk 10.104.109.176:2181,10.104.86.238:2182,10.104.122.21:2181 \
     --port 8787 \
     --refresh 10.seconds \
     --retain 7.days 1>/mydata/kafkamonitorlogs/stdout.log 2>/mydata/kafkamonitorlogs/stderr.log &

start.sh

#!/bin/bash
java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -cp KafkaOffsetMonitor-assembly-0.2.1.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk 10.104.109.176:2181,10.104.86.238:2182,10.104.122.21:2181 --port 8787 --refresh 10.seconds --retain 7.days 1>/mydata/kafkamonitorlogs/stdout.log 2>/mydata/kafkamonitorlogs/stderr.log &

stop.sh

#!/bin/bash

killnum=`jps | grep OffsetGetterWeb | awk '{print $1}'`
kill -9 ${killnum}
echo "OK...."

启动之后查看web界面
访问:安装服务器的ip:8787

http://testslave02:8787

界面如下:

这里写图片描述 这里写图片描述

其他功能自己去试一试。

但是发现,没有获取到broker,kafka的版本安装过高,不兼容,只有自己去下载最新的源码来编译了

GitHub连接地址(上面有命令的详细介绍):点击进入

安装sbt环境:

下载sbt,官网上面的半天下载不懂,找了个csdn上面的链接 0.13.8版本的,地址如下:点击进入

解压安装sbt:

我放到了D盘下面,创建一个目录将sbt安装到该目录下:

D:\sbt0.13.8

修改sbtconfig.txt配置文件:
添加一项:

-Dsbt.ivy.home=D:/sbtivy

在修改用户目录下的.sbt目录下创建repositories文件并且写入:

[repositories]  
public: http://maven.aliyun.com/nexus/content/groups/public/
typesafe:http://dl.bintray.com/typesafe/ivy-releases/ , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
ivy-sbt-plugin:http://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

在命令行执行 sbt,开始下载包,
但是执行到后面时候报错:

download failed: org.scalamacros#quasiquotes_2.10;2.0.1!quasiquotes_2.10.jar

在阿里云镜像里面没有,我果断把阿里镜像换成了默认的中央仓库,把repositories文件的

public: http://maven.aliyun.com/nexus/content/groups/public/

改为:

public: http://repo1.maven.org/maven2/

再次执行,OK

为了下载包速度快,我又把maven的仓库改为了阿里云的

开始编译KafkaOffsetMonitor

到工程目录下打开cmd执行

这里写图片描述
sbt clean assembly

就等待他慢慢编译:


这里写图片描述

等着。。。 突然发现,作者的在git上面写着的

If you do not want to build it manually, just download the current jar.

这里写图片描述

居然有编译好的,反正不管了,编译的也让它编译着,先直接下载上面提供的编译好的jar包。

地址:点击进入

如果下载不动的话,我也上传我自己的百度云了,链接:点击下载

这里写图片描述

将此jar包上传服务器

然后执行:

java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m \
     -cp KafkaOffsetMonitor-assembly-0.4.1-SNAPSHOT.jar \
     com.quantifind.kafka.offsetapp.OffsetGetterWeb \
     --offsetStorage kafka \
     --kafkaBrokers 10.104.109.176:9092,10.104.86.238:9092,10.104.122.21:9092 \
     --kafkaSecurityProtocol SASL_PLAINTEXT \
     --zk 10.104.109.176:2181,10.104.86.238:2182,10.104.122.21:2181 \
     --port 8787 \
     --refresh 10.seconds \
     --retain 5.days \
     --dbName offsetapp_kafka

jdk版本不兼容:

这里写图片描述

我自己的电脑也是1.8jdk,虽然编译成功了 但是服务器上面是jdk1.7 刚编译的执行了也不兼容,把本机jdk换成1.7重新编译….

等了大概半个多小时,报错包又拉不下来,又把仓库换成public: http://repo1.maven.org/maven2/ 继续编译。。。。
编译失败。。报错版本问题。。。

这里写图片描述

然后想到一个办法:直接在服务器上面创建一个新用户,并把新用户的自己的环境变量设置成jdk1.8,然后在启动,启动命令如下(zk端口换了,之前用的cdh的,这次自己搭建的zk):

java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m \
     -cp KafkaOffsetMonitor-assembly-0.4.1-SNAPSHOT.jar \
     com.quantifind.kafka.offsetapp.OffsetGetterWeb \
     --offsetStorage kafka \
     --kafkaBrokers testmaster:9092,testslave01:9092,testslave02:9092 \
     --kafkaSecurityProtocol PLAINTEXT \
     --zk testmaster:2188,testslave01:2188,testslave02:2188 \
     --port 8787 \
     --refresh 10.seconds \
     --retain 5.days \
     --dbName offsetapp_kafka
这里写图片描述 这里写图片描述
  topic:创建topic的名称
  partition:分区编号
  offset:该partition已经消费了多少条message
  logsize:该partition已经写入了多少条message
  lag:该partition未消费多少条message
  owner:gaipartition所属消费者

界面也都OK都能监控了:

这里写图片描述

</article>

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20641565/article/details/72897666

上一篇下一篇

猜你喜欢

热点阅读