一种消息中间件的监控方法及相关设备与流程

文档序号:18629973发布日期:2019-09-06 23:29阅读:209来源:国知局
一种消息中间件的监控方法及相关设备与流程

本发明涉及电子技术领域,尤其涉及一种消息中间件的监控方法及相关设备。



背景技术:

随着通讯数据量的不断增长,可为应用系统提供高效、灵活的数据传输处理和可靠转发的消息中间件应运而生,如tube、hippo、kafka以及metaq等。消息中间件可在大规模分布式环境下确保消息安全、可靠、高效的送达。现有的消息中间件中均未部署配套的监控告警模块,也没有提供相关的数据生产或消费偏移量的拉取接口和异常判断接口,整个消息中间件相当于一个黑盒。用户只能通过应用数据的曲线来判定数据的异常状态,它的实现方式是把应用数据指标上报到秒级监控平台,实时监控使用中间件的业务系统的健康状况。这种依赖线上应用的结果来反馈异常的方式效率低、影响业务系统的收益,并且当业务系统出现数据异常时,如果无法及时处理,会导致数据积压,影响业务系统运行效率。



技术实现要素:

本发明实施例提供一种消息中间件的监控方法及相关设备,可以快速高效地监控消息中间件中的数据滞后异常,避免数据积压给业务系统带来的影响。

第一方面,本发明实施例提供了一种消息中间件的监控方法,包括:

获取消息中间件中每个消息分区的数据生产指标和数据消费指标;

根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态;

当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息,所述告警信息用于提示用户处理所述消息分区。

其中,所述获取消息中间件中每个消息分区的数据生产指标和数据消费指标包括:

按照预设的时间间隔采集所述消息中间件中所述每个消息分区的所述数据生产指标和所述数据消费指标。

其中,所述数据生产指标包括生产偏移量,所述数据消费指标包括消费偏移量;

所述根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态包括:

确定所述生产偏移量和所述消费偏移量之间的第一差值;

当所述第一差值大于第一阈值时,确定所述消息分区的所述运行状态为所述异常状态。

其中,所述数据生产指标包括生产速度,所述数据消费指标包括消费速度;

所述根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态包括:

确定所述生产速度和所述消费速度之间的第二差值;

当所述第二差值大于第二阈值时,确定所述消息分区的所述运行状态为所述异常状态。

其中,所述向用户设备发送告警信息包括:

确定检测到所述消息分区的所述运行状态为所述异常状态的累积次数是否大于第三阈值;

当所述累积次数大于所述第三阈值时,向所述用户设备发送所述告警信息。

其中,所述向用户设备发送告警信息包括:

按照预设的告警方式向所述用户设备发送所述告警信息,所述告警方式包括电话、短信和邮件中的至少一种。

其中,所述向用户设备发送告警信息包括:

确定所述用户设备对应的目标用户所属的消费组的告警级别;

根据所述告警级别,选择告警方式向所述用户设备发送所述告警信息。

其中,所述确定所述用户设备对应的目标用户所属的消费组的告警级别包括:

获取所述消费组的业务类型;

根据所述业务类型,确定所述消费组的业务重要性;

根据所述业务重要性,确定所述消费组的所述告警级别。

第二方面,本发明实施例提供了一种消息中间件的监控装置,包括:

获取模块,用于获取消息中间件中每个消息分区的数据生产指标和数据消费指标;

判决模块,用于根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态;

告警模块,用于当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息,所述告警信息用于提示用户处理所述消息分区。

其中,所述获取模块具体用于:

按照预设的时间间隔采集所述消息中间件中所述每个消息分区的所述数据生产指标和所述数据消费指标。

其中,所述数据生产指标包括生产偏移量,所述数据消费指标包括消费偏移量;

所述判决模块具体用于:

确定所述生产偏移量和所述消费偏移量之间的第一差值;

当所述第一差值大于第一阈值时,确定所述消息分区的所述运行状态为所述异常状态。

其中,所述数据生产指标包括生产速度,所述数据消费指标包括消费速度;

所述判决模块具体用于:

确定所述生产速度和所述消费速度之间的第二差值;

当所述第二差值大于第二阈值时,确定所述消息分区的所述运行状态为所述异常状态。

其中,所述告警模块具体用于:

确定检测到所述消息分区的所述运行状态为所述异常状态的累积次数是否大于第三阈值;

当所述累积次数大于所述第三阈值时,向所述用户设备发送所述告警信息。

其中,所述告警模块具体用于:

按照预设的告警方式向所述用户设备发送所述告警信息,所述告警方式包括电话、短信和邮件中的至少一种。

其中,所述告警模块具体用于:

确定所述用户设备对应的目标用户所属的消费组的告警级别;

根据所述告警级别,选择告警方式向所述用户设备发送所述告警信息。

其中,所述告警模块具体用于:

获取所述消费组的业务类型;

根据所述业务类型,确定所述消费组的业务重要性;

根据所述业务重要性,确定所述消费组的所述告警级别。

第三方面,本发明实施例提供了一种消息中间件的监控设备,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面提供的一种消息中间件的监控方法中的步骤。

在一个可能的设计中,本发明提供的消息中间件的监控设备可以包含用于执行上述方法中行为相对应的模块。模块可以是软件和/或是硬件。

本发明实施例的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行上述各方面所述的方法。

本发明实施例的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

实施本发明实施例,首先获取消息中间件中每个消息分区的数据生产指标和数据消费指标;然后根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态;最后当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息,所述告警信息用于提示用户处理所述消息分区。通过实时监控消息中间件中的数据生产指标和数据消费指标,可以快速高效地监控消息中间件中的数据滞后异常,避免数据积压给业务系统带来的影响。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。

图1是本发明实施例提供的一种消息中间件的监控系统的结构示意图;

图2是本发明实施例提供的一种消息中间件的监控方法的流程示意图;

图3是本发明实施例提供的一种偏移量的示意图;

图4是本发明另一实施例提供的一种消息中间件的监控方法的流程示意图;

图5是本发明实施例提供的一种告警短信的示意图;

图6是本发明实施例提供的一种消息中间件的监控装置的结构示意图;

图7是本发明实施例提出的一种消息中间件的监控设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,图1是本发明实施例提供的一种消息中间件的监控系统的结构示意图。该消息中间件的监控系统包括用户设备、监控告警器和消息中间件。其中,用户设备可以是手机,也可以是个人计算机等。消息中间件可以是能够提供高效、安全的分布式数据传送环境的数据交流工具,如tube、hippo、kafka和metaq等。监控告警器可以包括配置与展示平台、配置库、指标数据库、采集客户端、异常分析模块、异常结果库以及告警分发模块。其中,用户可以通过用户设备在配置与展示平台上配置告警策略,提交监控申请。配置库用于存储用户输入的告警策略的相关数据,指标数据库用于存放采集客户端从消息中间件中采集的数据指标,异常分析模块则根据数据指标和告警策略检测异常,并将检测得到的异常信息存储在异常结果库中。告警分发模块则用于对异常结果库中的异常信息进行汇总并向用户设备发送告警信息。具体地,监控告警器首先获取消息中间件中每个消息分区的数据生产指标和数据消费指标;然后根据数据生产指标和数据消费指标,确定每个消息分区的运行状态是否为异常状态;最后当消息分区的运行状态为异常状态时,向用户设备发送告警信息,告警信息用于提示用户处理消息分区。基于上述消息中间件的监控系统系统,本发明实施例提供了如下解决方案。

请参见图2,图2是本发明实施例提供的一种消息中间件的监控方法的流程示意图,该方法包括但不限于如下步骤:

s201,获取消息中间件中每个消息分区的数据生产指标和数据消费指标。

具体实现中,消息中间件中可以包含多个数据存储节点(broker)和一个主节点(master),master可以管理和调度broker。每个broker划分为多个消息分区,并且每个broker以及每个消息分区都具有唯一的标识信息(identity,id)。此外,可以根据消息类型,如文本消息和图片消息,对利用消息中间件进行数据转发的消息进行分类。其中,可将同一类消息称为一个topic,每个topic的对应的数据存放在多个消息分区中,并且这多个消息分区可以分布在不同的broker上。broker可以向master汇报自身的id、运行状态、可以接收哪些topic的数据以及为每个topic提供的消息分区的数量。

应理解,作为消息中间件的数据生产方(producer),在把数据写入消息中间件之前需向master报告要发布的topic的名称,master则返回可以接收该topic的数据的broker的id,然后producer轮询向这些broke中写入数据。作为消息中间件的数据消费方(如用户设备),在读取消息中间件的数据之前需向master报告要订阅的topic的名称,master则返回存储该topic数据的broker的id,然后用户设备可从这些broker中读取数据。其中,根据业务类型可以将用户划分为不同的消费组,同一个消费组中的用户对应的用户设备读取同一个topic的数据,每个用户设备负责读取该topic下属的至少一个消息分区的数据,并且同一个消费组中的用户设备之间负责读取的消息分区不重叠,而不同的消费组中的用户设备可以读取同一消息分区,但互不影响。其中,每个消费组拥有至少一个负责人。

具体地,可以按照预设的时间间隔采集所述消息中间件中所述每个消息分区的所述数据生产指标和所述数据消费指标。其中,可以通过调用消息中间件的接口的方式、或通过统计本地文件大小的方式、或通过调用分布式应用程序协调服务器(如zookeeper)的客户端的方式,从消息中间件的分布式应用程序协调服务器中获取消息中间件中每个消息分区的数据生产指标和数据消费指标。

例如:预设时间间隔为1分钟,则每隔1分钟通过zookeeper客户端从zookeeper中采集消息中间件kafka中的正在运行的每个broker上的每个消息分区的生产偏移量、生产速度、消费偏移量和消费速度。

s202,根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态。

具体实现中,数据生产指标可以包括生产偏移量,以及数据消费指标可以包括消费偏移量。首先,确定所述生产偏移量和所述消费偏移量之间的第一差值。然后,当所述第一差值大于第一阈值时,确定所述消息分区的所述运行状态为所述异常状态。其中,如图3所示,生产偏移量可以为producer向消息分区写入的数据的存储地址相对该消息分区首地址的偏移量,如4945312个包。相应的,消费偏移量可以为用户设备从消息分区中读取的数据的存储地址相对于该消息分区首地址的偏移量,最小偏移量为producer向消息分区写入的数据的存储地址相对该消息分区首地址的最小偏移量。

例如:某个消息分区的生产偏移量为4945312个包,消费偏移量为49453128个包,计算得到生产偏移量减去消费偏移量的值为20166个包。因为20166大于20000,所以确定该消息分区的运行状态为异常状态。

可选的,数据生产指标可以包括生产速度,数据消费指标可以包括消费速度。首先确定所述生产速度和所述消费速度之间的第二差值;然后当所述第二差值大于第二阈值时,确定所述消息分区的所述运行状态为所述异常状态。其中,生产速度可以为producer向消息分区写入数据的速度,如90个包/秒。可以统计某段时间内producer向消息分区写入的数据的大小,然后将该数据大小除以该段时间的时间长度得到的平均写入速度作为所述生产速度。相应的,消费速度可以为用户设备从消息分区中读取数据的速度,可以统计某段时间内用户设备从消息分区中读取的数据的大小,然后将该数据大小除以该段时间的时间长度得到的平均读取速度作为所述消费速度。

需要说明的是,由于数据采集的误差,当生产偏移量减去消费偏移量和生产速度减去消费速度的值为负数时,可以将生产偏移量减去消费偏移量的值的绝对值作为第一差值,以及将生产速度减去消费速度的值的绝对值作为第二差值。

s203,当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息。

具体实现中,当所述消息分区的所述运行状态为所述异常状态时,首先确定检测到所述消息分区的所述运行状态为所述异常状态的累积次数是否大于第三阈值,当所述累积次数大于所述第三阈值时,按照预设的告警方式向所述用户设备发送所述告警信息,所述告警方式包括电话、短信和邮件中的至少一种。其中,所述告警信息用于提示用户处理所述消息分区。具体地,至少包括以下两种可选方式:

第一种可选方式:针对每个用户,在任意一次检测操作中,当某个用户对应的用户设备负责读取的消息分区被检测到运行状态为异常状态时,将该用户对应的所述累积次数加1。当累积次数大于第三阈值时,按照该用户预设的告警方式向该用户对应的用户设备发送所述告警信息。

例如:用户a对应的用户设备负责读取的消息分区1被检测到运行状态为异常状态的累积次数为2次,在当前正在进行的检测中又检测到消息分区1的运行状态为异常状态,从而将累积次数加1。此时,累积次数等于3次,因为3次大于2次,并且用户a预设的告警方式为短信告警,所以向用户a对应的用户设备发送一条告警短信,提示用户a处理消息分区1。

第二种可选方式:针对每个消费组,每个消费组至少包含一个用户。在任意一次检测操作中,当某个消费组中的一个或多个用户设备负责读取的消息分区被检测到运行状态为异常状态时,将该消费组对应的所述累积次数加1。当累积次数大于第三阈值时,按照该消费组的负责人预设的告警方式向该负责人对应的用户设备发送告警信息。

例如:消费组a中包含用户a、用户b和用户c,并且用户a为该消费组的负责人,用户a预设的告警方式为短信告警。用户a、用户b和用户c对应的用户设备分别负责读取消息分区1、消息分区2和消息分区3的数据。在首次检测操作中,检测到消息分区1的运行状态为异常状态,消息分区2和消息分区3的运行状态为正常状态,因此将消费组a对应的累积次数加1。在第二次检测操作中,检测到消息分区1和消息分区2的运行状态为异常状态,消息分区3的运行状态为正常状态,因此再将消费组a对应的累积次数加1。此时,累积大于1次,因此向用户a对应的用户设备发送一条告警短信,提醒用户a处理处于异常状态消息分区1和消息分区2。

在本发明实施例中,首先获取消息中间件中每个消息分区的数据生产指标和数据消费指标;然后根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态;最后当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息,所述告警信息用于提示用户处理所述消息分区。通过实时监控消息中间件中的数据生产指标和数据消费指标,可以快速高效地监控消息中间件中的数据滞后异常,避免数据积压给业务系统带来的影响。

请参见图4,图4是本发明另一实施例提供的一种消息中间件的监控方法的流程示意图,该方法包括但不限于如下步骤:

s401,获取消息中间件中每个消息分区的数据生产指标和数据消费指标。本步骤与上一实施例的s201相同,本步骤不再赘述。

s402,根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态。若是,则执行s403,若否,则终止于本步骤,不再执行下述步骤。本步骤的具体实施方式与上一实施例的s202相同,本步骤不再赘述。

可选的,可以首先将每次采集到的每个消息分区的数据生产指标和数据消费指标存入指标数据库,然后每隔预设的间隔时间(如5分钟)从指标数据库中获取数据生产指标和数据消费指标进行检测,以便确定每个消息分区的运行状态是否为异常状态。在检测完成后将指标数据库清空。

可选的,当所述消息分区的所述运行状态为所述异常状态时,将本次检测到的异常信息写入异常结果库,异常信息可以包括但不局限于处于异常状态的消息分区生产偏移量、生产速度、消费偏移量、消费速度、该消息分区的id,该消息分区对应的topic的名称、读取该消息分区的用户设备的id、该用户设备对应的用户所在的消费组的id和该消费组负责人的名称中的至少一种。

s403,确定检测到所述消息分区的所述运行状态为所述异常状态的累积次数是否大于第三阈值。若是,则执行s404,若否,则终止本步骤,不再执行下述步骤。至少包括以下两种可选方式:

第一种可选方式:针对每个用户,在任意一次检测操作中,当某个用户对应的用户设备负责读取的消息分区被检测到运行状态为异常状态时,将该用户对应的累积次数加1。然后,将累积次数与第三阈值的大小进行比较,以确定累积次数是否大于第三阈值。

第二种可选方式:针对每个消费组,每个消费组包含至少一个用户。在任意一次检测操作中,当某个消费组中一个或多个用户设备负责读取的消息分区被检测到运行状态为异常状态时,将该消费组对应的所述累积次数加1。然后,将累积次数与第三阈值的大小进行比较,以确定累积次数是否大于第三阈值。

s404,确定用户设备对应的目标用户所属消费组的告警级别。

具体实现中,所述告警级别可以由用户参考业务的重要性预先配置。或者,可以首先获取所述消费组的业务类型,如客户注册业务、数据分发业务等;然后根据所述业务类型,确定所述消费组的业务重要性;最后根据所述业务重要性确定所述消费组的告警级别。所述告警级别包括但不局限于第一级别、第二级别和第三级别。其中,第一级别为最高级别。第一级别可以为noc,表示通过电话、短信和邮件提醒用户,第二级别可以为sms,表示通过短信和邮件两种告警方式提醒用户,第三级别可以为mall,表示仅通过邮件提醒用户。

例如:消费组a负责客户注册业务,消费组b负责数据存档业务,以及消费组c负责客户回访业务,则因为客户注册业务的重要性高于数据存档业务和客户回访业务,客户回访业务的重要性高于数据存档业务。因此可以将消费组a的告警级别设置为noc、消费组b的告警级别设置为mall以及消费组c的告警级别设置为sms。从而,消费组a中的用户对应的用户设备的告警级别均为noc,消费组b中的用户对应的用户设备的告警级别均为mall,消费组c中的用户对应的用户设备的告警级别均为sms。

可选的,可以进一步确定所述累积次数是否大于第四阈值。其中,第四阈值大于第三阈值。当累积次数大于第四阈值时,确定消费组的告警级别为原来设定的告警级别,当累积次数大于第三阈值、且小于第四阈值时,将原来设定的告警级别降低一个级别作为当前的告警级别,其中,若原来设定的告警级别为最低级别,则维持原来的告警级别。

s405,根据所述告警级别,选择告警方式向所述用户设备发送告警信息。

具体实现中,当告警级别设置为第一级别时,同时通过电话、短信和邮件三种方式向用户设备发送告警信息,当告警级别设置为第二级别时,同时通过短信和邮件两种方式向用户设备发送告警信息,当告警级别设置为第三级别时,仅通过邮件的方式向用户设备发送告警信息。其中,所述告警信息用于提示用户处理所述消息分区。需要说明的是,告警级别不仅仅包含以上三种级别。

其中,当某个用户设备负责读取的消息分区被检测到运行状态为异常状态的累积次数大于第三阈值时,根据该用户设备的告警级别,选择告警方式向该用户设备发送告警信息。

例如:用户a负责读取的消息分区1被检测到运行状态为异常状态的累积次数为3次。因为3次大于两次,并且用户a的告警级别为sms,则向用户a发送告警短信和告警邮件,以便提示用户a处理消息分区1。

可选的,可以将异常结果库中的异常信息进行汇总,再结合汇总结果向用户设备发送告警信息。具体包括:

首先按照消费组的负责人对异常结果库中的异常信息进行汇总。

例如,异常结果库中包括的异常信息如表1所示,其中,第一条异常信息中包括的异常时间为2017-09-1314:02:05、负责人为lily、消费组名称为a、topic名称为video、告警级别为mall、broker的id为686、消息分区的id为74406、生产偏移量为494538个包、消费偏移量为472329个包、生产速度为86个包/秒、消费速度为19个包/秒,以及监控阈值为20000个包。相应的,异常结果库还包括其他两条异常信息,根据表1,可以确定消费组a和消费组b为异常消费组。

按照负责人的名称将表1中的异常信息进行汇总后,得到表2所示的异常概况。异常概况中包括异常时间、异常消费组的名称以及该异常消费组负责人的名称,还包括该异常消费组的告警级别、对应的topic的名称、被确定为异常消费组的累积次数,还包括具体的处于异常状态的broker的数量和消息分区的数量。进一步地,将表2所示的异常概况继续进行汇总得到表3的异常汇总,异常汇总表中包括异常时间、负责人名称、告警级别以及每个异常时间的异常消费组的数量。

表1.异常信息

表2.异常概况

表3.异常汇总

然后,根据汇总结果,进一步确定告警级别,并向用户设备发送告警信息。其中,至少包括以下三种情况:

第一种情况:根据汇总结果中级别最高的告警级别,选择告警方式向汇总结果中包括各消费组的负责人对应的用户设备发送告警信息。

例如:根据表3,因为sms的级别高于mall,所以按照告警级别sms所包括的短信和邮件的告警方式,向负责人lily和jane发送告警短信和告警邮件,提示lily处理消息分区74406和消息分区74410,以及提示提示jane处理消息分区74452。其中,警邮件内容依次包括表3、表2和表1。告警短信的短信内容如图5所示,告警短信指出sms级别的异常消费组的个数为1个,且该消费组的名称为b,以及mall级别的异常消费组的个数为1个,且该消费组的名称为a。sms下属的内容与mall下属的内容用逗号隔开。当某个告警级别下包含多个异常消费组时,各个异常消费组的名称用竖线隔开。

第二种情况:根据汇总结果中级别最高的告警级别,选择告警方式向汇总结果中包括各消费组的负责人对应的用户设备发送告警信息;然后负责人对应的用户设备向本组的其他用户对应的用户设备转发告警信息。

例如:根据表3,因为sms的级别高于mall,所以按照告警级别sms所包括的短信和邮件的告警方式,首先向负责人lily和jane对应的用户设备发送告警短信和告警邮件;然后负责人lily将告警短信和告警邮件转发给消费组a中的其他用户对应的用户设备,负责人jane将告警短信和告警邮件转发给消费组b中的其他用户对应的用户设备。其中,警邮件内容依次包括表3、表2和表1。告警短信的短信内容如图5所示。

第三种情况:根据汇总结果中级别最高的告警级别,选择告警方式向汇总结果中包括的消费组中所有用户对应的用户设备发送告警信息。

例如:根据表3,因为sms的级别高于mall,按照告警级别sms所包括的短信和邮件的告警方式,向消费组a和消费组b的中的所有用户对应的用户设备发送告警短信和告警邮件。其中,警邮件内容依次包括表3、表2和表1。告警短信的短信内容如图5所示。

可选的,若处于异常状态的消息分区在预设的时间内(如30分钟)仍未恢复正常状态,则可以再次向用户设备发送告警信息。

在本发明实施例中,首先获取消息中间件中每个消息分区的数据生产指标和数据消费指标;然后根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态;最后当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息,所述告警信息用于提示用户处理所述消息分区。通过实时监控消息中间件中的数据生产指标和数据消费指标,可以快速高效地监控消息中间件中的数据滞后异常,避免数据积压给业务系统带来的影响。

上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的装置。

请参见图6,图6是本发明实施例提供的一种消息中间件的监控装置的结构示意图,该消息中间件的监控装置可以包括:

获取模块601,用于获取消息中间件中每个消息分区的数据生产指标和数据消费指标。

具体实现中,可以按照预设的时间间隔采集所述消息中间件中所述每个消息分区的所述数据生产指标和所述数据消费指标。其中,可以通过调用消息中间件的接口的方式、或通过统计本地文件大小的方式、或通过调用分布式应用程序协调服务器(如zookeeper)的客户端的方式,从消息中间件的分布式应用程序协调服务器中获取消息中间件中每个消息分区的数据生产指标和数据消费指标。

判决模块602,用于根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态。

具体实现中,数据生产指标可以包括生产偏移量,以及数据消费指标可以包括消费偏移量。首先,确定所述生产偏移量和所述消费偏移量之间的第一差值。然后,当所述第一差值大于第一阈值时,确定所述消息分区的所述运行状态为所述异常状态。其中,如图3所示,生产偏移量可以为producer向消息分区写入的数据的存储地址相对该消息分区首地址的偏移量,如4945312个包。相应的,消费偏移量可以为用户设备从消息分区中读取的数据的存储地址相对于该消息分区首地址的偏移量,最小偏移量为producer向消息分区写入的数据的存储地址相对该消息分区首地址的最小偏移量。

可选的,数据生产指标可以包括生产速度,数据消费指标可以包括消费速度。首先确定所述生产速度和所述消费速度之间的第二差值;然后当所述第二差值大于第二阈值时,确定所述消息分区的所述运行状态为所述异常状态。其中,生产速度可以为producer向消息分区写入数据的速度,如90个包/秒。可以统计某段时间内producer向消息分区写入的数据的大小,然后将该数据大小除以该段时间的时间长度得到的平均写入速度作为所述生产速度。相应的,消费速度可以为用户设备从消息分区中读取数据的速度,可以统计某段时间内用户设备从消息分区中读取的数据的大小,然后将该数据大小除以该段时间的时间长度得到的平均读取速度作为所述消费速度。

需要说明的是,由于数据采集的误差,当生产偏移量减去消费偏移量和生产速度减去消费速度的值为负数时,可以将生产偏移量减去消费偏移量的值的绝对值作为第一差值,以及将生产速度减去消费速度的值的绝对值作为第二差值。

可选的,可以首先将每次采集到的每个消息分区的数据生产指标和数据消费指标存入指标数据库,然后每隔预设的间隔时间(如5分钟)从指标数据库中获取数据生产指标和数据消费指标进行检测,以便确定每个消息分区的运行状态是否为异常状态。在检测完成后将指标数据库清空。

进一步可选的,当所述消息分区的所述运行状态为所述异常状态时,将本次检测到的异常信息写入异常结果库,异常信息可以包括但不局限于处于异常状态的消息分区生产偏移量、生产速度、消费偏移量、消费速度、该消息分区的id,该消息分区对应的topic的名称、读取该消息分区的用户设备的id、该用户设备对应的用户所在的消费组的id和该消费组负责人的名称中的至少一种。

告警模块603,用于当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息。

具体实现中,当所述消息分区的所述运行状态为所述异常状态时,首先确定检测到所述消息分区的所述运行状态为所述异常状态的累积次数是否大于第三阈值。当所述累积次数大于所述第三阈值时,按照预设的告警方式向所述用户设备发送所述告警信息。所述告警方式包括电话、短信和邮件中的至少一种。其中,所述告警信息用于提示用户处理所述消息分区。具体地,至少包括以下两种可选方式:

第一种可选方式:针对每个用户,在任意一次检测操作中,当某个用户对应的用户设备负责读取的消息分区被检测到运行状态为异常状态时,将该用户对应的所述累积次数加1。当累积次数大于第三阈值时,按照该用户预设的告警方式向该用户对应的用户设备发送所述告警信息。

第二种可选方式:针对每个消费组,每个消费组至少包含一个用户。在任意一次检测操作中,当某个消费组中的一个或多个用户设备负责读取的消息分区被检测到运行状态为异常状态时,将该消费组对应的所述累积次数加1。当累积次数大于第三阈值时,按照该消费组的负责人预设的告警方式向该负责人对应的用户设备发送告警信息。

可选的,当确定检测到所述消息分区的所述运行状态为所述异常状态的累积次数大于第三阈值时,可以通过如下方式发送告警信息。

首先,确定用户设备对应的目标用户所属消费组的告警级别。

具体实现中,所述告警级别可以由用户参考业务的重要性预先配置。或者,可以首先获取所述消费组的业务类型,如客户注册业务、数据分发业务等;然后根据所述业务类型,确定所述消费组的业务重要性;最后根据所述业务重要性确定所述消费组的告警级别。所述告警级别包括但不局限于第一级别、第二级别和第三级别。其中,第一级别为最高级别。第一级别可以为noc,表示通过电话、短信和邮件提醒用户,第二级别可以为sms,表示通过短信和邮件两种告警方式提醒用户,第三级别可以为mall,表示仅通过邮件提醒用户。

进一步可选的,可以确定所述累积次数是否大于第四阈值。其中,第四阈值大于第三阈值。当累积次数大于第四阈值时,确定消费组的告警级别为原来设定的告警级别,当累积次数大于第三阈值、且小于第四阈值时,将原来设定的告警级别降低一个级别作为当前的告警级别,其中,若原来设定的告警级别为最低级别,则维持原来的告警级别。

接着,根据所述告警级别,选择告警方式向所述用户设备发送告警信息。具体地,当告警级别设置为第一级别时,同时通过电话、短信和邮件三种方式向用户设备发送告警信息,当告警级别设置为第二级别时,同时通过短信和邮件两种方式向用户设备发送告警信息,当告警级别设置为第三级别时,仅通过邮件的方式向用户设备发送告警信息。其中,所述告警信息用于提示用户处理所述消息分区。需要说明的是,告警级别不仅仅包含以上三种级别。

最后,按照所述告警级别所包括的告警方式向用户设备发送告警信息。具体地,当某个用户设备负责读取的消息分区被检测到运行状态为异常状态的累积次数大于第三阈值时,根据该用户设备的告警级别,选择告警方式向该用户设备发送告警信息。

可选的,可以将异常结果库中的异常信息进行汇总,再结合汇总结果向用户设备发送告警信息。具体包括:

首先,按照消费组的负责人对异常结果库中的异常信息进行汇总。

然后,根据汇总结果,进一步确定告警级别,并向用户设备发送告警信息。。其中,至少包括以下三种情况:

第一种情况:根据汇总结果中级别最高的告警级别,选择告警方式向汇总结果中包括各消费组的负责人对应的用户设备发送告警信息。

第二种情况:根据汇总结果中级别最高的告警级别,选择告警方式向汇总结果中包括各消费组的负责人对应的用户设备发送告警信息;然后负责人对应的用户设备向本组的其他用户对应的用户设备转发告警信息。

第三种情况:根据汇总结果中级别最高的告警级别,选择告警方式向汇总结果中包括的消费组中所有用户对应的用户设备发送告警信息。

可选的,若处于异常状态的消息分区在预设的时间内(如30分钟)仍未恢复正常状态,则可以再次向用户设备发送告警信息。

在本发明实施例中,首先获取消息中间件中每个消息分区的数据生产指标和数据消费指标;然后根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态;最后当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息,所述告警信息用于提示用户处理所述消息分区。通过实时监控消息中间件中的数据生产指标和数据消费指标,可以快速高效地监控消息中间件中的数据滞后异常,避免数据积压给业务系统带来的影响。

请继续参考图7,图7是本发明实施例提出的一种消息中间件的监控设备的结构示意图。如图所示,该消息中间件的监控设备可以包括:至少一个处理器701,至少一个通信接口702,至少一个存储器703和至少一个通信总线704。

其中,处理器701可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线704可以是外设部件互连标准pci总线或扩展工业标准结构eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线704用于实现这些组件之间的连接通信。其中,本发明实施例中设备的通信接口702用于与其他节点设备进行信令或数据的通信。存储器703可以包括易失性存储器,例如非挥发性动态随机存取内存(nonvolatilerandomaccessmemory,nvram)、相变化随机存取内存(phasechangeram,pram)、磁阻式随机存取内存(magetoresistiveram,mram)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、闪存器件,例如反或闪存(norflashmemory)或是反及闪存(nandflashmemory)、半导体器件,例如固态硬盘(solidstatedisk,ssd)等。存储器703可选的还可以是至少一个位于远离前述处理器701的存储装置。存储器703中存储一组程序代码,且处理器701执行存储器703中的程序。

获取消息中间件中每个消息分区的数据生产指标和数据消费指标;

根据所述数据生产指标和所述数据消费指标,确定所述每个消息分区的运行状态是否为异常状态;

当所述消息分区的所述运行状态为所述异常状态时,向用户设备发送告警信息,所述告警信息用于提示用户处理所述消息分区。

可选的,处理器701还用于执行如下操作步骤:

按照预设的时间间隔采集所述消息中间件中所述每个消息分区的所述数据生产指标和所述数据消费指标。

可选的,处理器701还用于执行如下操作步骤:

确定所述生产偏移量和所述消费偏移量之间的第一差值;

当所述第一差值大于第一阈值时,确定所述消息分区的所述运行状态为所述异常状态。

可选的,处理器701还用于执行如下操作步骤:

确定所述生产速度和所述消费速度之间的第二差值;

当所述第二差值大于第二阈值时,确定所述消息分区的所述运行状态为所述异常状态。

可选的,处理器701还用于执行如下操作步骤:

确定检测到所述消息分区的所述运行状态为所述异常状态的累积次数是否大于第三阈值;

当所述累积次数大于所述第三阈值时,向所述用户设备发送所述告警信息。

可选的,处理器701还用于执行如下操作步骤:

按照预设的告警方式向所述用户设备发送所述告警信息,所述告警方式包括电话、短信和邮件中的至少一种。

可选的,处理器701还用于执行如下操作步骤:

确定所述用户设备对应的目标用户所属的消费组的告警级别;

根据所述告警级别,选择告警方式向所述用户设备发送所述告警信息。

可选的,处理器701还用于执行如下操作步骤:

获取所述消费组的业务类型;

根据所述业务类型,确定所述消费组的业务重要性;

根据所述业务重要性,确定所述消费组的所述告警级别。

进一步的,处理器还可以与存储器和通信接口相配合,执行上述发明实施例中消息中间件的监控装置的操作。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1