CN109766236A - Kafka消息队列数监控方法、装置、电子设备及存储介质 - Google Patents

Kafka消息队列数监控方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN109766236A
CN109766236A CN201811537508.XA CN201811537508A CN109766236A CN 109766236 A CN109766236 A CN 109766236A CN 201811537508 A CN201811537508 A CN 201811537508A CN 109766236 A CN109766236 A CN 109766236A
Authority
CN
China
Prior art keywords
kafka
message queue
queue number
electronic equipment
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811537508.XA
Other languages
English (en)
Inventor
陈东杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201811537508.XA priority Critical patent/CN109766236A/zh
Publication of CN109766236A publication Critical patent/CN109766236A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种KAFKA消息队列数监控方法、装置、电子设备及存储介质。所述KAFKA消息队列数监控方法包括:当接收到KAFKA消息队列数监控指令时,定义指定全局变量;获取KAFKA的集群名称;引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据;对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据;输出所述KAFKA运行数据;从所述KAFKA运行数据中调取当前消息队列数;当所述当前消息队列数大于或者等于第一预设值时,发出警报。本发明能在KAFKA中的数据无法更新时进行及时预警,提高运维效率。

Description

KAFKA消息队列数监控方法、装置、电子设备及存储介质
技术领域
本发明涉及软件监控技术领域,尤其涉及一种KAFKA消息队列数监控方法、装置、电子设备及存储介质。
背景技术
KAFKA是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。由于KAFKA中可以存储的消息队列数有限,因此,一旦消息队列出现积压现象,将导致KAFKA中数据无法更新,一直处于等待状态,影响正常运行。
发明内容
鉴于以上内容,有必要提供一种KAFKA消息队列数监控方法、装置、电子设备及存储介质,能在KAFKA中的数据无法更新时进行及时预警,提高运维效率。
一种KAFKA消息队列数监控方法,所述方法包括:
当接收到KAFKA消息队列数监控指令时,定义指定全局变量;
获取KAFKA的集群名称;
引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据;
对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据;
输出所述KAFKA运行数据;
从所述KAFKA运行数据中调取当前消息队列数;
当所述当前消息队列数大于或者等于第一预设值时,发出警报。
根据本发明优选实施例,所述获取KAFKA的集群名称包括以下任意一种方式:
获取KAFKA的配置文件,从所述配置文件中获取所述集群名称;或者
获取KAFKA的历史运行记录,从所述历史运行记录中获取上次运行的集群名称作为所述集群名称。
根据本发明优选实施例,引用所述指定全局变量,能在任意路径下执行所述消费者信息脚本。
根据本发明优选实施例,所述KAFKA初始运行数据包括以下一种或者多种的组合:
主题、分区、主机、生产者ID、消息队列数、消费者ID。
根据本发明优选实施例,所述对所述KAFKA初始运行数据进行中文格式化包括:
采用export LANG=zh_CN.UTF-8命令,对所述KAFKA初始运行数据进行中文格式化。
根据本发明优选实施例,所述当所述当前消息队列数大于或者等于第一预设值时,发出警报包括以下一种或者多种方式的组合:
向指定人员发送报警邮件;及/或
向所述指定人员拨打报警电话;及/或
向所述指定人员发送报警信息;及/或
发出报警提示音。
根据本发明优选实施例,所述方法还包括:
对KAFKA进行压力测试,得到模拟消息队列数;
计算所述当前消息队列数与所述模拟消息队列数的差值;
当所述差值的绝对值大于第二预设值时,发出警报。
一种KAFKA消息队列数监控装置,所述装置包括:
定义单元,用于当接收到KAFKA消息队列数监控指令时,定义指定全局变量;
获取单元,用于获取KAFKA的集群名称;
引用单元,用于引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据;
格式化单元,用于对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据;
输出单元,用于输出所述KAFKA运行数据;
调取单元,用于从所述KAFKA运行数据中调取当前消息队列数;
发出单元,用于当所述当前消息队列数大于或者等于第一预设值时,发出警报。
根据本发明优选实施例,所述获取单元获取KAFKA的集群名称包括以下任意一种方式:
获取KAFKA的配置文件,从所述配置文件中获取所述集群名称;或者
获取KAFKA的历史运行记录,从所述历史运行记录中获取上次运行的集群名称作为所述集群名称。
根据本发明优选实施例,引用所述指定全局变量,能在任意路径下执行所述消费者信息脚本。
根据本发明优选实施例,所述KAFKA初始运行数据包括以下一种或者多种的组合:
主题、分区、主机、生产者ID、消息队列数、消费者ID。
根据本发明优选实施例,所述格式化单元具体用于:
采用export LANG=zh_CN.UTF-8命令,对所述KAFKA初始运行数据进行中文格式化。
根据本发明优选实施例,当所述当前消息队列数大于或者等于第一预设值时,所述发出单元发出警报包括以下一种或者多种方式的组合:
向指定人员发送报警邮件;及/或
向所述指定人员拨打报警电话;及/或
向所述指定人员发送报警信息;及/或
发出报警提示音。
根据本发明优选实施例,所述装置还包括:
测试单元,用于对KAFKA进行压力测试,得到模拟消息队列数;
计算单元,用于计算所述当前消息队列数与所述模拟消息队列数的差值;
所述发出单元,还用于当所述差值的绝对值大于第二预设值时,发出警报。
一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;及
处理器,执行所述存储器中存储的指令以实现所述KAFKA消息队列数监控方法。
一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现所述KAFKA消息队列数监控方法。
由以上技术方案可以看出,本发明能够在接收到KAFKA消息队列数监控指令时,定义指定全局变量,并结合获取的KAFKA集群名称,实现在任意路径下执行消费者信息脚本,得到KAFKA初始运行数据,进一步对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据,避免出现乱码,再从所述KAFKA运行数据中调取当前消息队列数,并当所述当前消息队列数大于或者等于第一预设值时,发出警报,从而实现及时预警,提高运维效率。
附图说明
图1是本发明KAFKA消息队列数监控方法的较佳实施例的流程图。
图2是本发明KAFKA消息队列数监控装置的较佳实施例的功能模块图。
图3是本发明实现KAFKA消息队列数监控方法的较佳实施例的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
如图1所示,是本发明KAFKA消息队列数监控方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
所述KAFKA消息队列数监控方法应用于一个或者多个电子设备中,所述电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(DigitalSignal Processor,DSP)、嵌入式设备等。
所述电子设备可以是任何一种可与用户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(Internet Protocol Television,IPTV)、智能式穿戴式设备等。
所述电子设备还可以包括网络设备和/或用户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(CloudComputing)的由大量主机或网络服务器构成的云。
所述电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
S10,当接收到KAFKA消息队列数监控指令时,所述电子设备定义指定全局变量。
在本发明的至少一个实施例中,KAFKA是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。由于KAFKA中可以存储的消息队列数有限,因此,一旦消息队列出现积压现象,将导致KAFKA中数据无法更新,一直处于等待状态,影响正常运行。
另外,KAFKA消息队列数是应用运维领域所关注的核心指标,对消息队列数进行监控,可以有效提高运维效率。
在本发明的至少一个实施例中,KAFKA消息队列数表示KAFKA中存储的消息队列的数量,并且,所述KAFKA消息队列数存在上限。
在本发明的至少一个实施例中,所述电子设备接收KAFKA消息队列数监控指令包括,但不限于以下一种或者多种的组合:
(1)所述电子设备接收用户触发的所述KAFKA消息队列数监控指令。
具体地,所述用户可以通过点击触发按键触发所述KAFKA消息队列数监控指令,所述触发按键可以是虚拟按键,或者是实体按键等。
所述用户还可以输入对应的语音指令,以作为所述KAFKA消息队列数监控指令,本发明不限制。
或者是,所述用户还可以输入指纹信息,以触发所述KAFKA消息队列数监控指令等。
(2)接收所述电子设备每隔预设时间间隔触发所述KAFKA消息队列数监控指令的信号。
具体地,所述预设时间间隔可以由所述电子设备进行配置,也可以由所述用户进行自定义配置,本发明不限制。
例如:所述预设时间间隔可以是每隔1分钟等。
(3)接收所述电子设备配置的在预设时间触发所述KAFKA消息队列数监控指令的信号。
具体地,所述预设时间可以由所述电子设备进行配置,也可以由所述用户进行自定义配置,本发明不限制。
例如:所述预设时间可以是12月1日上午10点等。
(4)接收所述电子设备在配置状态下触发的所述KAFKA消息队列数监控指令。
具体地,所述配置状态包括,但不限于KAFKA内数据无法更新的状态,也就是说,无法继续向KAFKA内存储数据。
在本发明的至少一个实施例中,所述指定全局变量指向全路径,也就是说,根据所述指定全局变量的变量名,可以在任意路径下调用与所述指定全局变量的变量名匹配的命令脚本,并执行所述匹配的命令脚本。
例如:所述电子设备可以通过脚本[root@SZC-L0050179~]#cat/wls/lifemon/monitor/kafka_lag.sh,定义所述指定全局变量。
通过上述实施方式,所述电子设备无需找到所述匹配的命令脚本所对应的路径,即可执行所述匹配的命令脚本,可操作性更强。
S11,所述电子设备获取KAFKA的集群名称。
在本发明的至少一个实施例中,一个集群对应一个集群名称,通过所述集群名称,可以唯一对应一个集群。
例如,所述集群名称可以是group elis-racs-prd-pg、group elis-racs-prd-es等。
具体地,所述电子设备获取KAFKA的集群名称包括,但不限于以下任意一种方式:
(1)所述电子设备获取KAFKA的配置文件,从所述配置文件中获取所述集群名称。
具体地,在安装KAFKA时,所述电子设备同时保存KAFKA的配置文件。
其中,所述配置文件中包括所述集群名称、KAFKA的性能参数等。
(2)所述电子设备获取KAFKA的历史运行记录,从所述历史运行记录中获取上次运行的集群名称作为所述集群名称。
具体地,所述电子设备将上次运行的集群名称作为所述集群名称,能够更加满足当前的监控需求。
S12,所述电子设备引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据。
具体地,所述电子设备引用所述指定全局变量,能在任意路径下执行所述消费者信息脚本。
进一步地,所述消费者信息脚本用于KAFKA,通过所述消费者信息脚本,能够获取到KAFKA的运行情况,并形成KAFKA初始运行数据,以展示给用户。
例如:所述电子设备引用所述全局变量,以实现对所述消费者信息脚本kafka-consumer-groups.sh的调用,从而获取到所述KAFKA初始运行数据。
优选地,所述KAFKA初始运行数据包括,但不限于以下一种或者多种的组合:
主题(TOPIC)、分区(PARTITION)、主机(HOST)、生产者ID(PRODUCER ID)、消息队列数(LAG)、消费者ID(CONSUMER ID)等。
在本发明的至少一个实施例中,所述电子设备引用所述指定全局变量,根据所述集群名称执行消费者信息脚本包括:
所述电子设备引用所述指定全局变量,根据所述集群名称,并结合集群IP(Internet Protocol Address,网际协议地址)及端口号,执行所述消费者信息脚本。
例如:所述电子设备执行填入参数后的所述消费者信息脚本kafka-consumer-groups.sh--bootstrap-server30.16.4.219:9092,30.16.4.197:9092,30.16.4.208:9092--describe--groupelis-racs-prd-pg,得到所述KAFKA初始运行数据。其中,所述集群IP为30.16.4.219,所述端口号为9092,所述集群名称为group elis-racs-prd-pg。
S13,所述电子设备对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据。
在本发明的至少一个实施例中,所述消费者信息脚本执行后,输出的执行结果如果不经过处理,可能会输出乱码,而乱码的来源主要来自于中文,因此,在本实施方式中,所述电子设备需要对所述执行脚本的执行结果(即所述KAFKA初始运行数据)进行处理,以防止出现乱码的情况。
在本实施例中,所述电子设备对所述KAFKA初始运行数据进行中文格式化,得到所述KAFKA运行数据,以避免出现乱码。
具体地,所述电子设备对所述KAFKA初始运行数据进行中文格式化包括:
所述电子设备采用export LANG=zh_CN.UTF-8命令,对所述KAFKA初始运行数据进行中文格式化。
其中,执行所述export LANG=zh_CN.UTF-8命令,是Linux操作系统下终端乱码的解决方案,可以将输出结果中的中文乱码转化为正确且可读的程序语言,再输出转化后的结果给用户,以使输出结果具有可读性。
S14,所述电子设备输出所述KAFKA运行数据。
在本发明的至少一个实施例中,所述电子设备输出所述KAFKA运行数据,以供用户查看。
在本发明的至少一个实施例中,所述电子设备还可以对所述KAFKA运行数据进行展示。
例如:所述电子设备可以通过Grafana展示平台展示所述KAFKA运行数据。所述Grafana展示平台是一个可视化面板(Dashboard),支持各种图表和布局展示,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。所述Grafana展示平台具有以下特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;支持多个数据源。
在其他实施例中,所述电子设备还可以通过Highcharts展示所述KAFKA运行数据,本发明不限制。
Highcharts是一个用纯JavaScript语言编写的图表库,能够很简单、便捷地在web网站或是web应用程序添加有交互性的图表,且支持监控平台的各种图例。
S15,所述电子设备从所述KAFKA运行数据中调取当前消息队列数。
在本发明的至少一个实施例中,所述电子设备可以通过指定关键字,从所述KAFKA运行数据中调取当前消息队列数,其中,所述指定关键字与所述当前消息队列数相对应。
例如:所述电子设备可以通过指定关键字LAG从所述KAFKA运行数据中调取到每个主题的当前消息队列数分别为10、29、26等。
S16,当所述当前消息队列数大于或者等于第一预设值时,所述电子设备发出警报。
在本发明的至少一个实施例中,所述第一预设值是一个配置的阈值,所述第一预设值可以作为比较的基准。具体地,所述第一预设值可以根据历史配置方式进行配置,也可以根据KAFKA业务量进行配置,本发明不做限制。
具体地,当所述当前消息队列数大于或者等于所述第一预设值时,所述电子设备发出警报;或者,当所述当前消息队列数小于所述第一预设值时,所述电子设备不执行操作。
在本发明的至少一个实施例中,所述电子设备通过MVC(Model-View-Controller)平台发出警报。
具体地,所述MVC,能够监控Model、View、Controller三层运行和交互过程中的性能状况。通过所述MVC平台,所述电子设备可以实现对KAFKA运行数据的监控。
更进一步地,当所述当前消息队列数大于或者等于第一预设值时,所述电子设备发出警报包括,但不限于以下一种或者多种方式的组合:
(1)向指定人员发送报警邮件。
(2)向所述指定人员拨打报警电话。
(3)向所述指定人员发送报警信息。
(4)发出报警提示音。
具体地,所述指定人员包括,但不限于以下一种或者多种的组合:运维人员、项目管理者、开发人员等。
通过上述实施方式,所述电子设备能够实现及时预警,且通过配置不同的报警方式,有效提高报警效率。
优选地,所述方法还包括:
所述电子设备对KAFKA进行压力测试,得到模拟消息队列数,所述电子设备计算所述当前消息队列数与所述模拟消息队列数的差值,当所述差值的绝对值大于第二预设值时,发出警报。
具体地,所述压力测试是指,通过模拟所述电子设备的实际使用场景,以实现对所述电子设备的实际运行指标的模拟测试。
具体地,所述第二预设值作为比较的基准,可以辅助确定消息队列数的情况,例如:所述第二预设值可以是10等。
通过上述实施方式,当实际情况与模拟情况差别较大时,说明可能存在问题,所述电子设备及时预警,以降低风险。
综上所述,本发明能够在接收到KAFKA消息队列数监控指令时,定义指定全局变量,并结合获取的KAFKA集群名称,实现在任意路径下执行消费者信息脚本,得到KAFKA初始运行数据,进一步对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据,避免出现乱码,再从所述KAFKA运行数据中调取当前消息队列数,并当所述当前消息队列数大于或者等于第一预设值时,发出警报,从而实现及时预警,提高运维效率。
如图2所示,是本发明KAFKA消息队列数监控装置的较佳实施例的功能模块图。所述KAFKA消息队列数监控装置11包括定义单元110、获取单元111、引用单元112、格式化单元113、输出单元114、调取单元115、发出单元116、测试单元117及计算单元118。本发明所称的模块/单元是指一种能够被处理器13所执行,并且能够完成固定功能的一系列计算机程序段,其存储在存储器12中。在本实施例中,关于各模块/单元的功能将在后续的实施例中详述。
当接收到KAFKA消息队列数监控指令时,定义单元110定义指定全局变量。
在本发明的至少一个实施例中,KAFKA是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。由于KAFKA中可以存储的消息队列数有限,因此,一旦消息队列出现积压现象,将导致KAFKA中数据无法更新,一直处于等待状态,影响正常运行。
另外,KAFKA消息队列数是应用运维领域所关注的核心指标,对消息队列数进行监控,可以有效提高运维效率。
在本发明的至少一个实施例中,KAFKA消息队列数表示KAFKA中存储的消息队列的数量,并且,所述KAFKA消息队列数存在上限。
在本发明的至少一个实施例中,所述电子设备接收KAFKA消息队列数监控指令包括,但不限于以下一种或者多种的组合:
(1)所述电子设备接收用户触发的所述KAFKA消息队列数监控指令。
具体地,所述用户可以通过点击触发按键触发所述KAFKA消息队列数监控指令,所述触发按键可以是虚拟按键,或者是实体按键等。
所述用户还可以输入对应的语音指令,以作为所述KAFKA消息队列数监控指令,本发明不限制。
或者是,所述用户还可以输入指纹信息,以触发所述KAFKA消息队列数监控指令等。
(2)接收所述电子设备每隔预设时间间隔触发所述KAFKA消息队列数监控指令的信号。
具体地,所述预设时间间隔可以由所述电子设备进行配置,也可以由所述用户进行自定义配置,本发明不限制。
例如:所述预设时间间隔可以是每隔1分钟等。
(3)接收所述电子设备配置的在预设时间触发所述KAFKA消息队列数监控指令的信号。
具体地,所述预设时间可以由所述电子设备进行配置,也可以由所述用户进行自定义配置,本发明不限制。
例如:所述预设时间可以是12月1日上午10点等。
(4)接收所述电子设备在配置状态下触发的所述KAFKA消息队列数监控指令。
具体地,所述配置状态包括,但不限于KAFKA内数据无法更新的状态,也就是说,无法继续向KAFKA内存储数据。
在本发明的至少一个实施例中,所述指定全局变量指向全路径,也就是说,根据所述指定全局变量的变量名,可以在任意路径下调用与所述指定全局变量的变量名匹配的命令脚本,并执行所述匹配的命令脚本。
例如:所述电子设备可以通过脚本[root@SZC-L0050179~]#cat/wls/lifemon/monitor/kafka_lag.sh,定义所述指定全局变量。
通过上述实施方式,所述电子设备无需找到所述匹配的命令脚本所对应的路径,即可执行所述匹配的命令脚本,可操作性更强。
获取单元111获取KAFKA的集群名称。
在本发明的至少一个实施例中,一个集群对应一个集群名称,通过所述集群名称,可以唯一对应一个集群。
例如,所述集群名称可以是group elis-racs-prd-pg、group elis-racs-prd-es等。
具体地,所述获取单元111获取KAFKA的集群名称包括,但不限于以下任意一种方式:
(1)所述获取单元111获取KAFKA的配置文件,从所述配置文件中获取所述集群名称。
具体地,在安装KAFKA时,所述电子设备同时保存KAFKA的配置文件。
其中,所述配置文件中包括所述集群名称、KAFKA的性能参数等。
(2)所述获取单元111获取KAFKA的历史运行记录,从所述历史运行记录中获取上次运行的集群名称作为所述集群名称。
具体地,所述获取单元111将上次运行的集群名称作为所述集群名称,能够更加满足当前的监控需求。
引用单元112引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据。
具体地,所述引用单元112引用所述指定全局变量,能在任意路径下执行所述消费者信息脚本。
进一步地,所述消费者信息脚本用于KAFKA,通过所述消费者信息脚本,能够获取到KAFKA的运行情况,并形成KAFKA初始运行数据,以展示给用户。
例如:所述引用单元112引用所述全局变量,以实现对所述消费者信息脚本kafka-consumer-groups.sh的调用,从而获取到所述KAFKA初始运行数据。
优选地,所述KAFKA初始运行数据包括,但不限于以下一种或者多种的组合:
主题(TOPIC)、分区(PARTITION)、主机(HOST)、生产者ID(PRODUCER ID)、消息队列数(LAG)、消费者ID(CONSUMER ID)等。
在本发明的至少一个实施例中,所述引用单元112引用所述指定全局变量,根据所述集群名称执行消费者信息脚本包括:
所述引用单元112引用所述指定全局变量,根据所述集群名称,并结合集群IP及端口号,执行所述消费者信息脚本。
例如:所述引用单元112执行填入参数后的所述消费者信息脚本kafka-consumer-groups.sh--bootstrap-server30.16.4.219:9092,30.16.4.197:9092,30.16.4.208:9092--describe--groupelis-racs-prd-pg,得到所述KAFKA初始运行数据。其中,所述集群IP为30.16.4.219,所述端口号为9092,所述集群名称为group elis-racs-prd-pg。
格式化单元113对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据。
在本发明的至少一个实施例中,所述消费者信息脚本执行后,输出的执行结果如果不经过处理,可能会输出乱码,而乱码的来源主要来自于中文,因此,在本实施方式中,所述电子设备需要对所述执行脚本的执行结果(即所述KAFKA初始运行数据)进行处理,以防止出现乱码的情况。
在本实施例中,所述格式化单元113对所述KAFKA初始运行数据进行中文格式化,得到所述KAFKA运行数据,以避免出现乱码。
具体地,所述格式化单元113对所述KAFKA初始运行数据进行中文格式化包括:
所述格式化单元113采用export LANG=zh_CN.UTF-8命令,对所述KAFKA初始运行数据进行中文格式化。
其中,执行所述export LANG=zh_CN.UTF-8命令,是Linux操作系统下终端乱码的解决方案,可以将输出结果中的中文乱码转化为正确且可读的程序语言,再输出转化后的结果给用户,以使输出结果具有可读性。
输出单元114输出所述KAFKA运行数据。
在本发明的至少一个实施例中,所述输出单元114输出所述KAFKA运行数据,以供用户查看。
在本发明的至少一个实施例中,所述输出单元114还可以对所述KAFKA运行数据进行展示。
例如:所述输出单元114可以通过Grafana展示平台展示所述KAFKA运行数据。所述Grafana展示平台是一个可视化面板(Dashboard),支持各种图表和布局展示,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。所述Grafana展示平台具有以下特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;支持多个数据源。
在其他实施例中,所述输出单元114还可以通过Highcharts展示所述KAFKA运行数据,本发明不限制。
Highcharts是一个用纯JavaScript语言编写的图表库,能够很简单、便捷地在web网站或是web应用程序添加有交互性的图表,且支持监控平台的各种图例。
调取单元115从所述KAFKA运行数据中调取当前消息队列数。
在本发明的至少一个实施例中,所述调取单元115可以通过指定关键字,从所述KAFKA运行数据中调取当前消息队列数,其中,所述指定关键字与所述当前消息队列数相对应。
例如:所述调取单元115可以通过指定关键字LAG从所述KAFKA运行数据中调取到每个主题的当前消息队列数分别为10、29、26等。
当所述当前消息队列数大于或者等于第一预设值时,发出单元116发出警报。
在本发明的至少一个实施例中,所述第一预设值是一个配置的阈值,所述第一预设值可以作为比较的基准。具体地,所述第一预设值可以根据历史配置方式进行配置,也可以根据KAFKA业务量进行配置,本发明不做限制。
具体地,当所述当前消息队列数大于或者等于所述第一预设值时,所述发出单元116发出警报;或者,当所述当前消息队列数小于所述第一预设值时,所述发出单元116不执行操作。
在本发明的至少一个实施例中,所述发出单元116通过MVC(Model-View-Controller)平台发出警报。
具体地,所述MVC,能够监控Model、View、Controller三层运行和交互过程中的性能状况。通过所述MVC平台,所述电子设备可以实现对KAFKA运行数据的监控。
更进一步地,当所述当前消息队列数大于或者等于第一预设值时,所述发出单元116发出警报包括,但不限于以下一种或者多种方式的组合:
(1)所述发出单元116向指定人员发送报警邮件。
(2)所述发出单元116向所述指定人员拨打报警电话。
(3)所述发出单元116向所述指定人员发送报警信息。
(4)所述发出单元116发出报警提示音。
具体地,所述指定人员包括,但不限于以下一种或者多种的组合:运维人员、项目管理者、开发人员等。
通过上述实施方式,所述发出单元116能够实现及时预警,且通过配置不同的报警方式,有效提高报警效率。
优选地,所述方法还包括:
测试单元117对KAFKA进行压力测试,得到模拟消息队列数,计算单元118计算所述当前消息队列数与所述模拟消息队列数的差值,当所述差值的绝对值大于第二预设值时,所述发出单元116发出警报。
具体地,所述压力测试是指,通过模拟所述电子设备的实际使用场景,以实现对所述电子设备的实际运行指标的模拟测试。
具体地,所述第二预设值作为比较的基准,可以辅助确定消息队列数的情况,例如:所述第二预设值可以是10等。
通过上述实施方式,当实际情况与模拟情况差别较大时,说明可能存在问题,所述发出单元116及时预警,以降低风险。
综上所述,本发明能够在接收到KAFKA消息队列数监控指令时,定义指定全局变量,并结合获取的KAFKA集群名称,实现在任意路径下执行消费者信息脚本,得到KAFKA初始运行数据,进一步对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据,避免出现乱码,再从所述KAFKA运行数据中调取当前消息队列数,并当所述当前消息队列数大于或者等于第一预设值时,发出警报,从而实现及时预警,提高运维效率。
如图3所示,是本发明实现RocketMQ线程数监控方法的较佳实施例的电子设备的结构示意图。
所述电子设备1是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述电子设备1还可以是但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(InternetProtocol Television,IPTV)、智能式穿戴式设备等。
所述电子设备1还可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。
所述电子设备1所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
在本发明的一个实施例中,所述电子设备1包括,但不限于,存储器12、处理器13,以及存储在所述存储器12中并可在所述处理器13上运行的计算机程序,例如RocketMQ线程数监控程序。
本领域技术人员可以理解,所述示意图仅仅是电子设备1的示例,并不构成对电子设备1的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备1还可以包括输入输出设备、网络接入设备、总线等。
所称处理器13可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器13是所述电子设备1的运算核心和控制中心,利用各种接口和线路连接整个电子设备1的各个部分,及执行所述电子设备1的操作系统以及安装的各类应用程序、程序代码等。
所述处理器13执行所述电子设备1的操作系统以及安装的各类应用程序。所述处理器13执行所述应用程序以实现上述各个RocketMQ线程数监控方法实施例中的步骤,例如图1所示的步骤S10、S11、S12、S13、S14、S15、S16。
或者,所述处理器13执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如:当接收到KAFKA消息队列数监控指令时,定义指定全局变量;获取KAFKA的集群名称;引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据;对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据;输出所述KAFKA运行数据;从所述KAFKA运行数据中调取当前消息队列数;当所述当前消息队列数大于或者等于第一预设值时,发出警报。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器12中,并由所述处理器13执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子设备1中的执行过程。例如,所述计算机程序可以被分割成定义单元110、获取单元111、引用单元112、格式化单元113、输出单元114、调取单元115、发出单元116、测试单元117及计算单元118。
所述存储器12可用于存储所述计算机程序和/或模块,所述处理器13通过运行或执行存储在所述存储器12内的计算机程序和/或模块,以及调用存储在存储器12内的数据,实现所述电子设备1的各种功能。所述存储器12可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器12可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述存储器12可以是电子设备1的外部存储器和/或内部存储器。进一步地,所述存储器12可以是集成电路中没有实物形式的具有存储功能的电路,如RAM(Random-AccessMemory,随机存取存储器)、FIFO(First In FirstOut,)等。或者,所述存储器12也可以是具有实物形式的存储器,如内存条、TF卡(Trans-flash Card)等等。
所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
结合图1,所述电子设备1中的所述存储器12存储多个指令以实现一种RocketMQ线程数监控方法,所述处理器13可执行所述多个指令从而实现:当接收到KAFKA消息队列数监控指令时,定义指定全局变量;获取KAFKA的集群名称;引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据;对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据;输出所述KAFKA运行数据;从所述KAFKA运行数据中调取当前消息队列数;当所述当前消息队列数大于或者等于第一预设值时,发出警报。
根据本发明优选实施例,所述处理器13还执行多个指令包括:
获取KAFKA的配置文件,从所述配置文件中获取所述集群名称;或者
获取KAFKA的历史运行记录,从所述历史运行记录中获取上次运行的集群名称作为所述集群名称。
根据本发明优选实施例,引用所述指定全局变量,能在任意路径下执行所述消费者信息脚本。
根据本发明优选实施例,所述KAFKA初始运行数据包括以下一种或者多种的组合:
主题、分区、主机、生产者ID、消息队列数、消费者ID。
根据本发明优选实施例,所述处理器13还执行多个指令包括:
采用export LANG=zh_CN.UTF-8命令,对所述KAFKA初始运行数据进行中文格式化。
根据本发明优选实施例,所述处理器13还执行多个指令包括:
向指定人员发送报警邮件;及/或
向所述指定人员拨打报警电话;及/或
向所述指定人员发送报警信息;及/或
发出报警提示音。
根据本发明优选实施例,所述处理器13还执行多个指令包括:
对KAFKA进行压力测试,得到模拟消息队列数;
计算所述当前消息队列数与所述模拟消息队列数的差值;
当所述差值的绝对值大于第二预设值时,发出警报。
具体地,所述处理器13对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (10)

1.一种KAFKA消息队列数监控方法,其特征在于,所述方法包括:
当接收到KAFKA消息队列数监控指令时,定义指定全局变量;
获取KAFKA的集群名称;
引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据;
对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据;
输出所述KAFKA运行数据;
从所述KAFKA运行数据中调取当前消息队列数;
当所述当前消息队列数大于或者等于第一预设值时,发出警报。
2.如权利要求1所述的KAFKA消息队列数监控方法,其特征在于,所述获取KAFKA的集群名称包括以下任意一种方式:
获取KAFKA的配置文件,从所述配置文件中获取所述集群名称;或者
获取KAFKA的历史运行记录,从所述历史运行记录中获取上次运行的集群名称作为所述集群名称。
3.如权利要求1所述的KAFKA消息队列数监控方法,其特征在于,引用所述指定全局变量,能在任意路径下执行所述消费者信息脚本。
4.如权利要求1所述的KAFKA消息队列数监控方法,其特征在于,所述KAFKA初始运行数据包括以下一种或者多种的组合:
主题、分区、主机、生产者ID、消息队列数、消费者ID。
5.如权利要求1所述的KAFKA消息队列数监控方法,其特征在于,所述对所述KAFKA初始运行数据进行中文格式化包括:
采用export LANG=zh_CN.UTF-8命令,对所述KAFKA初始运行数据进行中文格式化。
6.如权利要求1所述的KAFKA消息队列数监控方法,其特征在于,所述当所述当前消息队列数大于或者等于第一预设值时,发出警报包括以下一种或者多种方式的组合:
向指定人员发送报警邮件;及/或
向所述指定人员拨打报警电话;及/或
向所述指定人员发送报警信息;及/或
发出报警提示音。
7.如权利要求1所述的KAFKA消息队列数监控方法,其特征在于,所述方法还包括:
对KAFKA进行压力测试,得到模拟消息队列数;
计算所述当前消息队列数与所述模拟消息队列数的差值;
当所述差值的绝对值大于第二预设值时,发出警报。
8.一种KAFKA消息队列数监控装置,其特征在于,所述装置包括:
定义单元,用于当接收到KAFKA消息队列数监控指令时,定义指定全局变量;
获取单元,用于获取KAFKA的集群名称;
引用单元,用于引用所述指定全局变量,根据所述集群名称执行消费者信息脚本,得到KAFKA初始运行数据;
格式化单元,用于对所述KAFKA初始运行数据进行中文格式化,得到KAFKA运行数据;
输出单元,用于输出所述KAFKA运行数据;
调取单元,用于从所述KAFKA运行数据中调取当前消息队列数;
发出单元,用于当所述当前消息队列数大于或者等于第一预设值时,发出警报。
9.一种电子设备,其特征在于,所述电子设备包括:
存储器,存储至少一个指令;及
处理器,执行所述存储器中存储的指令以实现如权利要求1至7中任意一项所述的KAFKA消息队列数监控方法。
10.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现如权利要求1至7中任意一项所述的KAFKA消息队列数监控方法。
CN201811537508.XA 2018-12-15 2018-12-15 Kafka消息队列数监控方法、装置、电子设备及存储介质 Pending CN109766236A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811537508.XA CN109766236A (zh) 2018-12-15 2018-12-15 Kafka消息队列数监控方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811537508.XA CN109766236A (zh) 2018-12-15 2018-12-15 Kafka消息队列数监控方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN109766236A true CN109766236A (zh) 2019-05-17

Family

ID=66451886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811537508.XA Pending CN109766236A (zh) 2018-12-15 2018-12-15 Kafka消息队列数监控方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN109766236A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111225024A (zh) * 2019-11-22 2020-06-02 北京旷视科技有限公司 大体积数据的传输方法、系统、装置、电子设备及计算机可读存储介质
CN112965875A (zh) * 2021-03-09 2021-06-15 中消云(北京)物联网科技研究院有限公司 消息队列的监控方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103995906A (zh) * 2014-06-13 2014-08-20 北京京东尚科信息技术有限公司 一种异常处理方法和装置
CN106886457A (zh) * 2015-12-16 2017-06-23 泰康保险集团股份有限公司 消息队列处理方法及装置
CN107391279A (zh) * 2017-07-31 2017-11-24 山东浪潮云服务信息科技有限公司 一种消息队列容器创建方法、装置及消息队列容器
CN107423141A (zh) * 2017-06-20 2017-12-01 北京小度信息科技有限公司 信息处理方法及装置
CN108701056A (zh) * 2016-03-31 2018-10-23 英特尔公司 用于动态工作队列管理的技术

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103995906A (zh) * 2014-06-13 2014-08-20 北京京东尚科信息技术有限公司 一种异常处理方法和装置
CN106886457A (zh) * 2015-12-16 2017-06-23 泰康保险集团股份有限公司 消息队列处理方法及装置
CN108701056A (zh) * 2016-03-31 2018-10-23 英特尔公司 用于动态工作队列管理的技术
CN107423141A (zh) * 2017-06-20 2017-12-01 北京小度信息科技有限公司 信息处理方法及装置
CN107391279A (zh) * 2017-07-31 2017-11-24 山东浪潮云服务信息科技有限公司 一种消息队列容器创建方法、装置及消息队列容器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ZLJJAVA: "Linux操作系统下终端乱码的终极解决方案 export LANG=zh_CN.UTF-8 export LANG=en_US", 《HTTPS://BLOG.CSDN.NET/ZLJJAVA/ARTICLE/DETAILS/7209067?》 *
汪保友等: "基于FKS的信令采集与监控技术", 《电信科学》 *
高达一号: "Kafka_Kafka 消费者 偏移量 与 积压 查询脚本 kafka-consumer-groups.sh", 《HTTPS://BLOG.CSDN.NET/U010003835/ARTICLE/DETAILS/83000537?》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111225024A (zh) * 2019-11-22 2020-06-02 北京旷视科技有限公司 大体积数据的传输方法、系统、装置、电子设备及计算机可读存储介质
CN112965875A (zh) * 2021-03-09 2021-06-15 中消云(北京)物联网科技研究院有限公司 消息队列的监控方法及装置

Similar Documents

Publication Publication Date Title
CN110597595B (zh) 多语言信息的提供方法、配置方法、装置、设备和介质
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
CN108595316B (zh) 分布式应用的生命周期管理方法、管理器、设备和介质
US9201715B2 (en) Event overflow handling by coalescing and updating previously-queued event notification
JP7200277B2 (ja) ワードスロットを識別するための方法及び装置、電子機器、記憶媒体並びにコンピュータプログラム
US20160140254A1 (en) Identifying and structuring related data
CN112214155B (zh) 一种视图信息播放方法、装置、设备和存储介质
CN109800124A (zh) Cpu使用率监控方法、装置、电子设备及存储介质
CN109766236A (zh) Kafka消息队列数监控方法、装置、电子设备及存储介质
CN113656533A (zh) 一种树形控件处理方法、装置及电子设备
CN113805827A (zh) 一种投屏展示方法、装置、电子设备及存储介质
CN113656369A (zh) 一种大数据场景下的日志分布式流式采集及计算方法
CN109815082A (zh) Kafka主题监控方法、装置、电子设备及存储介质
CN109889399A (zh) RocketMQ客户端连接数监控方法、装置、电子设备及存储介质
CN114756301B (zh) 日志处理方法、装置和系统
CN110928940A (zh) 基于kafka集群的数据写入方法、装置、电子设备、存储介质
CN113242148B (zh) 监控告警相关信息的生成方法、装置、介质及电子设备
CN109828885A (zh) RocketMQ内存监控方法、装置、电子设备及存储介质
CN109840179A (zh) RocketMQ线程数监控方法、装置、电子设备及存储介质
CN110333930A (zh) 数字化平台系统
CN114995875A (zh) 页面组件配置方法、装置、电子设备及存储介质
CN109766238A (zh) 基于session数的运维平台性能监控方法、装置及相关设备
EP4209933A1 (en) Data processing method and apparatus, and electronic device and storage medium
CN116541002A (zh) 搜索页面的生成方法、装置、存储介质及终端设备
CN113221010A (zh) 事件传播状态的显示方法、装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190517