CN116881076B - 一种基于消息快照的多任务软件监测方法及系统 - Google Patents

一种基于消息快照的多任务软件监测方法及系统 Download PDF

Info

Publication number
CN116881076B
CN116881076B CN202310792237.7A CN202310792237A CN116881076B CN 116881076 B CN116881076 B CN 116881076B CN 202310792237 A CN202310792237 A CN 202310792237A CN 116881076 B CN116881076 B CN 116881076B
Authority
CN
China
Prior art keywords
message
snapshot
operator
matching
topic
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.)
Active
Application number
CN202310792237.7A
Other languages
English (en)
Other versions
CN116881076A (zh
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.)
Chinese People's Liberation Army 32806 Unit
Original Assignee
Chinese People's Liberation Army 32806 Unit
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 Chinese People's Liberation Army 32806 Unit filed Critical Chinese People's Liberation Army 32806 Unit
Priority to CN202310792237.7A priority Critical patent/CN116881076B/zh
Publication of CN116881076A publication Critical patent/CN116881076A/zh
Application granted granted Critical
Publication of CN116881076B publication Critical patent/CN116881076B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种基于消息快照的多任务软件监测方法及系统,包括:基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;基于消息快照对多任务软件进行监测报警处理。本发明生成消息快照为调试人员提供有组织、有条理的任务现场数据,提高了调试效率,实现不中断现有任务执行,快速低开销地保存模块间交互现场,及时进行预警和调试分析,保证了软件系统安全稳定运行。

Description

一种基于消息快照的多任务软件监测方法及系统
技术领域
本发明涉及多任务软件系统任务监测及调试技术领域,具体涉及一种基于消息快照的多任务软件监测方法及系统。
背景技术
很多大型软件系统都是多任务系统,要求不同的任务运行特定的功能,不同的任务可以是线程也可以是进程,各个任务间要交互数据,并且很多软件系统涉及分布式多平台协作,不仅单一平台的任务之间需要交互数据,各平台的任务之间也要通信交互,任务之间使用消息进行通信是比较通用的数据交换方式。
对于多任务软件系统,监测、获取了任务系统中的一定时间段的消息数据,相当于该时间段的任务交互现场。
多任务软件系统的任务流程较复杂,实际运行过程中,难免会出现意想不到的任务故障,有些故障原因是隐蔽不易发现的,需要在实际运行环境下随时获取并分析任务运行时的消息数据才有助于解决故障。
现有的软件故障监测、分析、调试工具,如GDB调试器即GNU Debugger,通常是注入断点和查看变量值的方式,GDB调试器的watch指令支持为程序注入观察断点,监测某个变量或表达式的值,当值发生改变,程序就停止执行。
这种基于断点注入方式调试程序的方法,要求调试人员对代码结构和函数调用过程完全掌握,主要用于对问题精确定位。但对于多任务软件,调试初期根本无法确定断点应该断在哪个机器、进程或者线程,而不同的机器、进程、线程的代码由不同的开发者分别开发,调试耗费的人力和时间开销很大。另外,可以通过查看与分析日志来确定系统当前运行状态和定位问题,但是日志输出方式依赖各业务模块对本模块的日志输出控制,调试者往往不能监控到整个任务系统的任务现场全景,并且大量日志信息也不够直观,很难快速定位复杂、隐蔽的故障问题。
现有技术如ROS(Robot Operating System,机器人操作系统)系统的rosbag工具,通过录制、存储多任务软件系统的话题数据,再进行消息数据回放的方式测试、定位故障。该方式虽然记录了任务系统的消息数据,但未对消息数据进行组织管理,且高通量数据流的情形下,录制数据体量很大,调试者很难从大量数据中还原故障发生时的任务现场。
发明内容
为了解决现有的调试人员很难从大量数据中还原故障发生时任务现场,进而难以快速定位复杂隐蔽故障的问题,本发明提供了一种基于消息快照的多任务软件监测方法,包括:
基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;
基于消息快照对多任务软件进行监测报警处理。
优选的,所述基于预警算子参数生成预警算子匹配规则库,包括:
基于所述预警算子参数生成算子匹配函数代码;
基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库。
优选的,所述基于所述预警算子参数生成算子匹配函数代码,包括:
解析所述预警算子参数中的边界值算子得到预设边界值,并基于所述预设边界值生成边界值比较代码;
解析所述预警算子参数中的关键字算子得到预设关键字,并基于所述预设关键字生成关键字匹配代码;
基于所述预警算子参数中的消息长度算子生成消息长度匹配代码;
解析所述预警算子参数中的自定义算子得到自定义算子代码;
基于所述边界值比较代码,自定义算子代码,关键字匹配代码和消息长度匹配代码生成算子匹配函数代码;
其中,所述预警算子参数包括:边界值算子,自定义算子,关键字算子和消息长度算子;
所述算子匹配函数代码包括:边界值比较代码,关键字匹配代码,消息长度匹配代码和自定义算子代码。
优选的,所述基于消息快照对多任务软件进行监测报警处理,包括:
解析消息快照中的运行参数得到调试模式标签内容;
若所述调试模式标签内容为自动,则报警提醒调试人员多任务软件运行异常,否则不进行监测报警处理。
再一方面,本发明还提供了一种调试工具控制端,包括:
综合处理模块,用于基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;
监测处理模块,用于基于消息快照对多任务软件进行监测报警处理。
优选的,所述综合处理模块,包括:
第一代码生成子模块,用于基于所述预警算子参数生成算子匹配函数代码;
第二代码生成子模块,用于基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
规则库生成子模块,用于编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库;
信息发送子模块,用于将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端;
快照接收子模块,用于接收多任务软件系统端发送的消息快照。
优选的,所述第一代码生成子模块,包括:
比较代码生成单元,用于解析所述预警算子参数中的边界值算子得到预设边界值,并基于所述预设边界值生成边界值比较代码;
第一匹配代码生成单元,用于解析所述预警算子参数中的关键字算子得到预设关键字,并基于所述预设关键字生成关键字匹配代码;
第二匹配代码生成单元,用于基于所述预警算子参数中的消息长度算子生成消息长度匹配代码;
自定义算子代码生成单元,用于解析所述预警算子参数中的自定义算子得到自定义算子代码;
函数代码生成单元,用于基于所述边界值比较代码,自定义算子代码,关键字匹配代码和消息长度匹配代码生成算子匹配函数代码;
其中,所述预警算子参数包括:边界值算子,自定义算子,关键字算子和消息长度算子;
所述算子匹配函数代码包括:边界值比较代码,关键字匹配代码,消息长度匹配代码和自定义算子代码。
优选的,所述监测处理模块,包括:
解析子模块,用于解析消息快照中的运行参数得到调试模式标签内容;
异常监测处理子模块,用于若所述调试模式标签内容为自动,则报警提醒调试人员多任务软件运行异常,否则不进行监测报警处理。
再一方面,本发明还提供了一种多任务软件监测方法,包括:
获取多任务软件的消息;
将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令;
基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端。
优选的,所述将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,包括:
将所述状态信息和话题采集参数进行匹配;
若所述状态信息与所述话题采集参数匹配,则将匹配的消息存入临时消息缓存队列,并基于所述消息的实际数据和预警算子匹配规则库得到匹配结果,否则不将消息存入临时消息缓存队列;
其中,所述状态信息包括:发布话题的任务进程名称、发布话题的模块种类、话题名称、话题发布者线程名称,话题发布者标识,目标平台ID和目标平台进程名称;
所述话题采集参数包括:进程名称、模块种类和话题名称。
优选的,所述基于所述消息的实际数据和预警算子匹配规则库生成匹配结果,包括:
将所述实际数据输入预警算子匹配规则库中得到匹配结果。
优选的,所述基于所述匹配结果生成快照回传指令,包括:
判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令;
其中,所述调试触发参数包括:快照回传触发模式,需要回传快照的机器平台ID和需要回传快照的任务进程名称。
优选的,所述基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,包括:
解析快照回传指令中的调试触发参数得到快照回传触发模式;
当所述快照回传触发模式为自动时,设置调试模式标签内容为自动模式,并基于调试模式标签内容和消息的运行参数结合层级结构生成消息快照;
当所述快照回传触发模式为手动时,设置调试模式标签内容为手动模式,并基于消息的运行参数结合层级结构生成消息快照;
其中,所述运行参数包括:任务进程,话题名称,话题发布方信息,话题接收方信息,消息内容。
再一方面,本发明还提供了一种多任务软件系统端,包括:
消息中间件模块,用于获取多任务软件的消息,将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令;
快照采集模块,用于基于所述快照回传指令从所述消息中间件模块的临时消息缓存队列中获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端。
优选的,所述消息中间件模块,包括:
消息获取子模块,用于获取多任务软件的消息;
第一匹配子模块,用于将所述状态信息和话题采集参数进行匹配;
第二匹配子模块,用于若所述状态信息与所述话题采集参数匹配,则将匹配的消息存入临时消息缓存队列,并基于所述消息的实际数据和预警算子匹配规则库得到匹配结果,否则不将消息存入临时消息缓存队列;
快照回传指令触发子模块,用于判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令;
其中,所述状态信息包括:发布话题的任务进程名称、发布话题的模块种类、话题名称、话题发布者线程名称,话题发布者标识,目标平台ID和目标平台进程名称;
所述话题采集参数包括:进程名称、模块种类和话题名称;
所述调试触发参数包括:快照回传触发模式,需要回传快照的机器平台ID和需要回传快照的任务进程名称。
优选的,所述第二匹配子模块,具体用于:
将所述实际数据输入预警算子匹配规则库中得到匹配结果。
优选的,所述快照采集模块,包括:
参数解析子模块,用于解析快照回传指令中的调试触发参数得到快照回传触发模式;
第一快照生成子模块,用于当所述快照回传触发模式为自动时,设置调试模式标签内容为自动模式,并基于调试模式标签内容和消息的运行参数结合层级结构生成消息快照;
第二快照生成子模块,用于当所述快照回传触发模式为手动时,设置调试模式标签内容为手动模式,并基于消息的运行参数结合层级结构生成消息快照;
发送子模块,用于将所述消息快照发送给调试工具控制端;
其中,所述运行参数包括:任务进程,话题名称,话题发布方信息,话题接收方信息,消息内容。
基于同一发明构思,本发明还提供了一种基于消息快照的多任务软件监测系统,包括:
调试工具控制端,用于基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;基于消息快照对多任务软件进行监测报警处理;
多任务软件系统端,用于获取多任务软件的消息,将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令,基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端。
与现有技术相比,本发明的有益效果为:
本发明提供了一种基于消息快照的多任务软件监测方法及系统,包括:基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;基于消息快照对多任务软件进行监测报警处理。本发明生成预警算子匹配规则库,提供给终端一种无代码或低代码的消息内容查看和设置预警算子的方法,使得系统集成调试人员可以从模块间的交互数据分析和定位软件故障,无需深入到模块内部的细节;支持调试人员灵活定制系统异常情况,当预设的预警算子匹配时,主动触发“消息快照”并回传,及时预警及调试分析;通过定制消息中间件模块的方式,无需修改现有多任务软件的实现,就可以实现快照获取;通过生成消息快照,描述任务交互现场,为调试人员提供有组织、有条理的任务现场数据,提高了调试效率,实现不中断现有任务执行,快速低开销地保存模块间交互现场,实现任务自动监测,及时进行预警和调试分析。
附图说明
图1是本发明提供的一种基于消息快照的多任务软件监测方法的主要步骤流程图;
图2是本发明实施例提供的一种基于消息快照的多任务软件监测方法的主要步骤流程图;
图3是本发明实施例的消息快照结构图;
图4是本发明实施例的快照采集模块生成消息快照流程图;
图5是本发明实施例的多任务软件系统端模块示意图;
图6是本发明提供的一种基于消息快照的多任务软件监测系统的结构图;
图7是本发明实施例的多任务系统软件监测流程图。
具体实施方式
因此,针对多任务软件系统,特别是分布式多平台协同的多任务软件系统,设计出既能有效组织和保存当前任务交互现场,又能自动预警和支持运行时分析任务现场异常情况的任务监测及调试系统,实现对复杂系统的故障预测、分析,减小故障调试难度,是非常必要的。
为了更好地理解本发明,下面结合说明书附图和实施例对本发明的内容做进一步的说明。
实施例1:
本发明提供一种基于消息快照的多任务软件监测方法,如图1所示,包括:
步骤S1:基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;
步骤S2:基于消息快照对多任务软件进行监测报警处理。
步骤S1中基于预警算子参数生成预警算子匹配规则库,具体包括:
步骤S11:基于所述预警算子参数生成算子匹配函数代码;
步骤S12:基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
步骤S13:编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库。
其中,步骤S11中基于所述预警算子参数生成算子匹配函数代码,具体包括:
步骤S11a:解析所述预警算子参数中的边界值算子得到预设边界值,并基于所述预设边界值生成边界值比较代码;
步骤S11b:解析所述预警算子参数中的关键字算子得到预设关键字,并基于所述预设关键字生成关键字匹配代码;
步骤S11c:基于所述预警算子参数中的消息长度算子生成消息长度匹配代码;
步骤S11d:解析所述预警算子参数中的自定义算子得到自定义算子代码;
步骤S11e:基于所述边界值比较代码,自定义算子代码,关键字匹配代码和消息长度匹配代码生成算子匹配函数代码。
步骤S11的具体执行过程如下:
1.预设预警算子参数
预警算子参数结构包括话题名称、消息类型、消息特定元素边界值算子、消息特定元素关键字算子、消息长度算子、自定义算子,各消息中间件缓存消息时,通过匹配预警算子,决定是否触发消息快照自动回传。
如果话题名称为空,表示消息中间件不进行预警算子匹配。
消息特定元素边界值算子,是指上述话题对应的消息结构体中特定元素的边界值映射表。边界值包括最大最小值。映射表的键为消息特定字段的名称,映射表的值为消息特定字段的边界值。该边界值是由开发或调试人员设置的特定元素的边界值。映射表为空表示消息中间件不进行边界值算子匹配。
消息长度算子,是指消息长度。很多消息的元素个数是可变的,该消息长度值由调试人员通过参考多任务系统正常运行时相应话题的消息长度确定。消息长度为-1表示消息中间件不进行消息长度算子匹配。
消息特定元素关键字算子,是指上述话题对应的消息结构体中特定元素的关键字值映射表。映射表的键为消息特定字段的名称,映射表的值为消息特定字段的关键字值,是由调试人员设置的相应消息字段需关注的关键字信息。映射表为空表示消息中间件不进行关键字算子匹配。
自定义算子,是指用户自定义的针对上述话题的预警匹配代码。具体预警匹配规则由用户自己编写。如果代码为空,表示消息中间件不进行自定义算子匹配。
预警算子不局限于上述特定算子,可通过加入表达式求解的方式做算子扩展。
2.调试工具控制端解析预警算子参数,生成算子匹配规则库
调试工具控制端解析预警算子参数,自动生成算子参数中所述消息类型的算子匹配函数代码。具体如下:
解析算子参数的边界值算子,如果边界值算子映射表不为空,获取边界值算子映射表中消息特定字段的名称及边界值,生成所述消息类型所述消息特定字段的边界值比较代码,边界值算子映射表中可包含多个消息字段及其边界值,需依次判断实际值是否在边界值范围以外。如果实际值超出边界值范围,则触发快照自动回传,举例消息类型为TopicAMsg,消息结构如表1所示:
表1TopicAMsg消息结构表
边界值算子映射表为{(a,0,100),(b,5,10)},则可以自动生成以下关于边界值比较的代码,边界值比较代码如表2所示:
表2边界值比较代码表
解析算子参数中的关键值算子,如果关键字算子映射表不为空,获取关键字算子映射表中消息特定字段的名称及关键字,生成所述消息类型所述消息特定字段的关键字匹配代码。举例关键字算子映射表为{(c,“target_error”),(d,“interrupt”)},则可以自动生成以下关于关键字匹配的代码,关键字匹配代码如下表3所示:
表3关键字匹配代码表
解析算子参数中的消息长度算子,如果消息长度算子值不为-1,生成所述消息类型的消息长度匹配代码。举例消息长度算子的值为1000,则可以自动生成以下关于消息长度比较的代码,消息长度比较代码如下表4所示:
表4消息长度比较代码表
解析算子参数中的自定义算子,如果自定义算子不为空,保存用户编写的自定义算子代码。举例用户编写了判断消息字段a和字段b差值范围的自定义算子代码,如下表5所示:
表5自定义算子代码表
自动生成的完整的消息类型TopicAMsg的算子匹配函数,算子匹配函数代码如下表6所示:
表6算子匹配函数代码表
步骤S12中基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码的具体过程为:
在本步骤中,调试工具控制端解析预警算子参数,根据话题名称选择相应消息类型的算子匹配函数,生成整个消息中间件算子匹配的代码。
举例预警算子参数的话题名称、消息类型为{{topic_A,TopicAMsg,...},{topic_B,TopicBMs g,...},{topic_C,TopicAMsg,...}},则生成消息中间件算子匹配函数代码,消息中间件算子匹配函数代码如表7所示:
表7消息中间件算子匹配代码表
步骤S13中编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库的具体过程为:
在本步骤中,编译上述根据预警算子参数自动生成的消息中间件算子匹配代码,生成消息中间件的算子匹配规则库。
步骤S1中将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照的具体过程为:
1.预设话题采集参数
话题采集参数结构包含进程名称、模块种类、话题名称,用来控制消息中间件缓存特定进程、特定模块的特定话题消息。
进程名称可以是一个进程名称,也可以是多个进程名称,各名称之间用分号分隔。如果进程名称为空,表示缓存全部任务进程的消息。
多任务系统中可包括若干执行模块,如数据采集模块、数据处理模块、数据存储模块等。模块种类参数可以是一个模块,也可以是多个模块,各模块种类之间用分号分隔。如果模块种类为空,表示缓存全部模块种类的消息。
话题名称可以是一个话题,也可以是多个话题名称,话题名称之间用分号分隔。话题名称为空表示缓存全部话题消息。
2.调试工具控制端将预设的话题采集参数及编译生成的算子匹配规则库下发至多任务软件系统的快照采集模块。
3.调试工具控制端发送快照回传指令、接收来自各平台多任务软件系统端的消息快照、自动分析消息快照、检测异常。
在本步骤中,生成预警算子匹配规则库提供给终端一种无代码或低代码的消息内容查看和设置预警算子的方法,使得系统集成调试人员可以从模块间的交互数据分析和定位软件故障,无需深入到模块内部的细节。
步骤S2中基于消息快照对多任务软件进行监测报警处理,包括:
步骤S21:解析消息快照中的运行参数得到调试模式标签内容;
步骤S22:若所述调试模式标签内容为自动,则报警提醒调试人员多任务软件运行异常,否则不进行监测报警处理。
步骤S2具体过程为:
在本步骤中,调试工具控制端接收并分析快照,完成任务监测、任务异常预警功能。具体内容如下:
1.接收并解析快照
调试工具控制端接收并解析来自各机器平台的消息快照,具体内容如下:
调试工具控制端接收来自各机器平台的消息快照,并按照“时间戳_平台ID.snapshot.xml”的格式保存各机器平台的消息快照。根据消息快照的结构,解析消息快照各标签内容。
2.任务预警
调试工具控制端对多任务软件系统运行异常进行报警,具体内容如下:
调试工具控制端解析消息快照<debug_mode>标签内容,对标签内容为“auto”的消息快照,报警显示,通过醒目的方式提醒任务监测、调试人员。具体如下:
<debug_mode>标签内容为“manual”,表示该消息快照是调试工具控制端主动请求的消息快照。
<debug_mode>标签内容为“auto”,表示消息快照是机器平台的多任务快照采集模块监测到其维护的任务进程有异常退出情形时,主动上传的消息快照或匹配调试人员预设的预警算子参数的消息快照。报警提醒调试人员多任务软件系统运行异常。
3.快照自动分析
调试工具控制端自动分析消息快照,确认任务流程执行有无异常,具体内容如下:
调试工具控制端解析消息快照<publishers>标签内容,遍历各任务进程发布的消息,获取各发布消息的接收者信息,包括接收者IP地址、平台ID、接收者进程名称。
根据上述接收者IP地址、平台ID及接收者进程名称,调试工具控制端定位接收者机器平台所反馈的消息快照,解析接收者消息快照<subcribers>标签内容,获取到接收者进程对应话题的消息,遍历接收者进程的消息。如果发布者消息号与上述接收者消息号匹配,说明发布者消息正常到达接收端,任务流程执行正常;如果发布者消息号与上述接收者消息号未能匹配,说明消息快照获取时刻接收者还未接收到来自发布者的消息。此种情况下,调试工具控制端可触发连续快照功能进一步获取快照并分析任务流程。
4.快照检索
调试工具控制端提供消息关键字检索功能以快速定位消息,具体内容如下:
调试工具控制端支持以机器IP地址、平台ID、任务进程名称、任务线程名称、话题名称、发布者ID、接收者ID、消息号等为关键字的单独或组合检索,以便于从多个机器平台的多条消息快照中快速定位消息。
5.快照内容自动打印
调试工具控制端为不同的消息类型自动生成打印函数代码,自动编译为打印函数动态库,并动态加载。打印函数主要用于将序列化的二进制消息内容,按照消息类型各字段值打印出来,为用户提供友好可读的消息内容。
在本步骤中,生成的消息快照,描述了任务交互现场,为调试人员提供有组织、有条理的任务现场数据,提高了监测效率,实现不中断现有任务执行,用消息快照的方式快速低开销地保存模块间交互现场,实现任务自动监测,及时进行预警和调试分析。
实施例2:
本发明提供了一种调试工具控制端,包括:
综合处理模块,用于基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;
监测处理模块,用于基于消息快照对多任务软件进行监测报警处理。
其中,综合处理模块具体包括:
第一代码生成子模块,用于基于所述预警算子参数生成算子匹配函数代码;
第二代码生成子模块,用于基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
规则库生成子模块,用于编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库;
信息发送子模块,用于将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端;
快照接收子模块,用于接收多任务软件系统端发送的消息快照。
其中,第一代码生成子模块具体包括:
比较代码生成单元,用于解析所述预警算子参数中的边界值算子得到预设边界值,并基于所述预设边界值生成边界值比较代码;
第一匹配代码生成单元,用于解析所述预警算子参数中的关键字算子得到预设关键字,并基于所述预设关键字生成关键字匹配代码;
第二匹配代码生成单元,用于基于所述预警算子参数中的消息长度算子生成消息长度匹配代码;
自定义算子代码生成单元,用于解析所述预警算子参数中的自定义算子得到自定义算子代码;
函数代码生成单元,用于基于所述边界值比较代码,自定义算子代码,关键字匹配代码和消息长度匹配代码生成算子匹配函数代码。
第一代码生成子模块具体用于:
1.预警算子参数结构
预警算子参数结构包括话题名称、消息类型、自定义算子、消息特定元素边界值算子、消息特定元素关键字算子、消息长度算子,各消息中间件缓存消息时,通过匹配预警算子,决定是否触发消息快照自动回传。
如果话题名称为空,表示消息中间件不进行预警算子匹配。
消息特定元素边界值算子,是指上述话题对应的消息结构体中特定元素的边界值映射表。边界值包括最大最小值。映射表的键为消息特定字段的名称,映射表的值为消息特定字段的边界值。该边界值是由开发或调试人员设置的特定元素的边界值。映射表为空表示消息中间件不进行边界值算子匹配。
消息长度算子,是指消息长度。很多消息的元素个数是可变的,该消息长度值由调试人员通过参考多任务系统正常运行时相应话题的消息长度确定。消息长度为-1表示消息中间件不进行消息长度算子匹配。
消息特定元素关键字算子,是指上述话题对应的消息结构体中特定元素的关键字值映射表。映射表的键为消息特定字段的名称,映射表的值为消息特定字段的关键字值,是由调试人员设置的相应消息字段需关注的关键字信息。映射表为空表示消息中间件不进行关键字算子匹配。
自定义算子,是指用户自定义的针对上述话题的预警匹配代码。具体预警匹配规则由用户自己编写。如果代码为空,表示消息中间件不进行自定义算子匹配。
预警算子不局限于上述特定算子,可通过加入表达式求解的方式做算子扩展。
2.调试工具控制端解析预警算子参数,生成算子匹配规则库。
调试工具控制端解析预警算子参数,自动生成算子参数中所述消息类型的算子匹配函数代码。具体如下:
解析算子参数的边界值算子,如果边界值算子映射表不为空,获取边界值算子映射表中消息特定字段的名称及边界值,生成所述消息类型所述消息特定字段的边界值比较代码,边界值算子映射表中可包含多个消息字段及其边界值,需依次判断实际值是否在边界值范围以外。如果实际值超出边界值范围,则触发快照自动回传,举例消息类型为TopicAMsg,消息结构代码如实施例1中表1所涉及的内容,这里不再赘述。
举例边界值算子映射表为{(a,0,100),(b,5,10)},则可以自动生成以下关于边界值比较的代码,边界值比较代码如实施例1中表2所涉及的内容,这里不再赘述。
解析算子参数中的关键值算子,如果关键字算子映射表不为空,获取关键字算子映射表中消息特定字段的名称及关键字,生成所述消息类型所述消息特定字段的关键字匹配代码。举例关键字算子映射表为{(c,“target_error”),(d,“interrupt”)},则可以自动生成以下关于关键字匹配的代码,关键字匹配代码如实施例1中表3所涉及的内容,这里不再赘述。
解析算子参数中的消息长度算子,如果消息长度算子值不为-1,生成所述消息类型的消息长度匹配代码。举例消息长度算子的值为1000,则可以自动生成以下关于消息长度比较的代码,消息长度匹配代码如实施例1中表4所涉及的内容,这里不再赘述。
解析算子参数中的自定义算子,如果自定义算子不为空,保存用户编写的自定义算子代码。举例用户编写了判断消息字段a和字段b差值范围的自定义算子代码如实施例1中表5所涉及的内容,这里不再赘述。
自动生成的完整的消息类型TopicAMsg的算子匹配函数,算子匹配函数代码如上述实施例1中表6所涉及的内容,这里不再赘述。
第二代码生成子模块,用于基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码,具体执行过程如下:
调试工具控制端解析预警算子参数,根据话题名称选择相应消息类型的算子匹配函数,生成整个消息中间件算子匹配的代码。
举例预警算子参数的话题名称、消息类型为{{topic_A,TopicAMsg,...},{topic_B,TopicBMs g,...},{topic_C,TopicAMsg,...}},则生成消息中间件算子匹配函数代码,消息中间件算子匹配代码如实施例1中表7所涉及的内容,这里不再赘述。
规则库生成子模块具体用于:
在本实施例中,编译上述根据预警算子参数自动生成的消息中间件算子匹配代码,生成消息中间件的算子匹配规则库。
信息发送子模块和快照接收子模块具体用于:
调试工具控制端预设调试参数、自动生成算子匹配代码并编译成算子匹配规则库、发送快照回传指令、接收来自各平台多任务软件系统端的消息快照、自动分析消息快照、检测异常。具体执行过程如下:
1.调试工具控制端预设话题采集参数
话题采集参数结构包含进程名称、模块种类、话题名称,用来控制消息中间件缓存特定进程、特定模块的特定话题消息。
进程名称可以是一个进程名称,也可以是多个进程名称,各名称之间用分号分隔。如果进程名称为空,表示缓存全部任务进程的消息。
多任务系统中可包括若干执行模块,如数据采集模块、数据处理模块、数据存储模块等。模块种类参数可以是一个模块,也可以是多个模块,各模块种类之间用分号分隔。如果模块种类为空,表示缓存全部模块种类的消息。
话题名称可以是一个话题,也可以是多个话题名称,话题名称之间用分号分隔。话题名称为空表示缓存全部话题消息。
2.调试工具控制端将预设的话题采集参数及编译生成的算子匹配规则库下发至多任务软件系统的快照采集模块。
3.调试工具控制端发送快照回传指令、接收来自各平台多任务软件系统端的消息快照、自动分析消息快照、检测异常。
在本实施例中,生成预警算子匹配规则库提供给终端一种无代码或低代码的消息内容查看和设置预警算子的方法,使得系统集成调试人员可以从模块间的交互数据分析和定位软件故障,无需深入到模块内部的细节。
监测处理模块具体包括:
解析子模块,用于解析消息快照中的运行参数得到调试模式标签内容;
异常监测处理子模块,用于若所述调试模式标签内容为自动,则报警提醒调试人员多任务软件运行异常,否则不进行监测报警处理,
监测处理模块具体用于:
在本实施例中,调试工具控制端接收并分析快照,完成任务监测、任务异常预警功能。具体内容如下:
1.接收并解析快照
调试工具控制端接收并解析来自各机器平台的消息快照,具体内容如下:
调试工具控制端接收来自各机器平台的消息快照,并按照“时间戳_平台ID.snapshot.xml”的格式保存各机器平台的消息快照。根据消息快照的结构,解析消息快照各标签内容。
2.任务预警
调试工具控制端对多任务软件系统运行异常进行报警,具体内容如下:
调试工具控制端解析消息快照<debug_mode>标签内容,对标签内容为“auto”的消息快照,报警显示,通过醒目的方式提醒任务监测、调试人员。具体如下:
<debug_mode>标签内容为“manual”,表示该消息快照是调试工具控制端主动请求的消息快照。
<debug_mode>标签内容为“auto”,表示消息快照是机器平台的多任务快照采集模块监测到其维护的任务进程有异常退出情形时,主动上传的消息快照或匹配调试人员预设的预警算子参数的消息快照。报警提醒调试人员多任务软件系统运行异常。
3.快照自动分析
调试工具控制端自动分析消息快照,确认任务流程执行有无异常,具体内容如下:
调试工具控制端解析消息快照<publishers>标签内容,遍历各任务进程发布的消息,获取各发布消息的接收者信息,包括接收者IP地址、平台ID、接收者进程名称。
根据上述接收者IP地址、平台ID及接收者进程名称,调试工具控制端定位接收者机器平台所反馈的消息快照,解析接收者消息快照<subcribers>标签内容,获取到接收者进程对应话题的消息,遍历接收者进程的消息。如果发布者消息号与上述接收者消息号匹配,说明发布者消息正常到达接收端,任务流程执行正常;如果发布者消息号与上述接收者消息号未能匹配,说明消息快照获取时刻接收者还未接收到来自发布者的消息。此种情况下,调试工具控制端可触发连续快照功能进一步获取快照并分析任务流程。
4.快照检索
调试工具控制端提供消息关键字检索功能以快速定位消息,具体内容如下:
调试工具控制端支持以机器IP地址、平台ID、任务进程名称、任务线程名称、话题名称、发布者ID、接收者ID、消息号等为关键字的单独或组合检索,以便于从多个机器平台的多条消息快照中快速定位消息。
5.快照内容自动打印
调试工具控制端为不同的消息类型自动生成打印函数代码,自动编译为打印函数动态库,并动态加载。打印函数主要用于将序列化的二进制消息内容,按照消息类型各字段值打印出来,为用户提供友好可读的消息内容。
在本实施例中,生成的消息快照,描述了任务交互现场,为调试人员提供有组织、有条理的任务现场数据,提高了监测效率,实现不中断现有任务执行,用消息快照的方式快速低开销地保存模块间交互现场,实现任务自动监测,及时进行预警和调试分析。
实施例3:
本发明提供一种基于消息快照的多任务软件监测方法,如图2所示,包括:
步骤S101:获取多任务软件的消息;
步骤S102:将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令;
步骤S103:基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端。
步骤S101中获取多任务软件的消息,具体过程为:
各任务模块通过自身的消息中间件发布消息或接收消息。
步骤S102中将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,具体包括:
步骤S102a:将所述状态信息和话题采集参数进行匹配;
步骤S102b:若所述状态信息与所述话题采集参数匹配,则将匹配的消息存入临时消息缓存队列,并基于所述消息的实际数据和预警算子匹配规则库得到匹配结果,否则不将消息存入临时消息缓存队列;
其中,步骤S102b具体包括:
将所述实际数据输入预警算子匹配规则库中得到匹配结果。
步骤S102中将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果的具体执行过程如下:
多任务软件系统包括消息中间件模块。消息中间件模块用于获取多任务软件的消息,将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令。
多任务软件系统还包括快照采集模块,快照采集模块用于接收及存储话题采集参数及预警算子匹配规则库。各机器平台多任务软件系统的快照采集模块接收话题采集参数,通过共享内存的方式,允许各任务模块的消息中间件访问话题采集参数。各机器平台多任务软件系统的快照采集模块接收算子匹配规则库,通知各任务模块的消息中间件重新加载算子匹配规则库。
各任务模块的消息中间件在发送或接收消息时,访问预设的话题采集参数,决定快照开关及话题采集种类。获取本任务模块关键信息生成临时消息,并缓存固定数量的临时消息到临时消息队列,同时通过调用动态加载的预警算子匹配规则库的算子匹配函数,判断是否自动触发快照回传指令。
(1)消息中间件缓存临时消息
消息中间件发送和接收消息时,匹配预设话题采集参数,获取话题发布者与接收者所处任务模块的关键信息,生成临时消息,缓存固定数量的临时消息至临时消息队列。
消息中间件发送和接收消息时匹配话题采集参数,决定缓存的临时消息种类。具体方法如下:
消息中间件发送(或接收)消息时,访问话题采集参数的共享内存值,如果话题采集参数的进程名称不为空并且不包含本任务进程名称,则本进程不缓存发布者(或接收者)临时消息;
否则判断话题采集参数的模块名称与上述消息发布者(或接收者)创建时所设置的模块名称是否一致,如果话题采集参数的模块名称不为空并且不包含本消息发布者(或接收者)的模块名称,则本进程不缓存发布者(或接收者)临时消息;
否则判断话题采集参数的话题名称与本话题名称是否一致,如果话题采集参数的话题名称不为空并且不包含本话题名称,则本进程不缓存发布者(或接收者)临时消息,否则将上述发布者(或接收者)临时消息缓存到发布者(或接收者)临时消息映射表。举例如下:
本任务进程为task_1,创建话题topic1的发布者时所设置的模块名称为“数据采集模块”。
如表8话题采集参数表中的示例1的各项话题采集参数,表示进程名称、模块名称、话题名称都匹配,因此本任务进程的消息中间件缓存该发布者消息到发布者临时消息映射表。
如表8中的示例2的各项话题采集参数,表示进程名称匹配,但数据处理模块不匹配,即调试者不关注数据处理模块的消息,因此不缓存该发布者消息。
表8话题采集参数表
示例1 示例2
进程名称 task_1
模块名称 数据采集模块 数据处理模块
话题名称 topic1;topic2
(2)发布者临时消息的结构如表9所示:
表9发布者临时消息结构表
临时消息结构体分为临时消息头部与消息体部分,结构体可命名为PubTempMsg,具体内容如下:
消息号:用户消息的消息号,用于唯一标识该消息。该值在发布消息时由消息中间件自动生成并填充到消息中。
时间戳:消息发布时间。
发布者线程名称:多任务软件系统的任务进程包含多线程的情况下,需对各线程命名,消息中间件获取消息发布者所处任务线程的线程名称。便于消息快照分析时迅速定位消息来源。
接收者平台ID:用户发送消息时,在publish接口中指定的接收者机器ID,如果接收者ID为-1,表示向通信域内所有机器平台发送消息。
接收者平台IP:用户发送消息时,在publish接口中指定的接收者机器ID所对应的IP地址,如果接收者ID为-1,表示向通信域内所有机器平台发送消息。
接收者进程名称:用户发送消息时,在publish接口中指定向接收者平台上特定进程发送消息,如果接收者进程名为空,表示向接收者平台上所有进程发送消息。
序列化的消息内容:发布该话题时对应的用户消息,消息中间件将其序列化以进行传输。
通过获取发布者任务模块信息,生成发布者临时消息,可为任务调试者提供完备信息,迅速定位、追踪消息。
(3)接收者临时消息的结构如表10所示:
表10接收者临时消息结构表
临时消息结构体分为临时消息头部与消息体部分,结构体可命名为SubTempMsg,具体内容如下:
消息号:用户接收到的消息的消息号,用于唯一标识该消息,该值在发布者发送消息时生成。
时间戳:消息接收时间。
话题接收者唯一标识SubId列表:该话题所有接收者的唯一标识SubId列表。创建话题接收者时,消息中间件会维护该话题的所有已注册接收者信息,包括唯一标识SubId。
话题接收者线程列表:该话题所有接收者所处线程的线程名称列表。多任务软件系统的任务进程包含多线程的情况下,需对各线程命名,消息中间件获取消息接收者所处任务线程的线程名称。便于消息快照分析时迅速定位消息来源。
序列化的消息内容:接收该话题时对应的用户消息,消息中间件将其序列化以进行传输。
通过获取接收者任务模块信息,生成接收者临时消息,可为任务调试者提供完备信息,迅速定位、追踪消息。
(4)消息中间件发送消息时,匹配话题采集参数,决定需要缓存的话题种类后,消息中间件创建发布者临时消息映射表,将上述发布者临时消息缓存到发布者临时消息映射表。具体方法如下:
①发布者临时消息映射表的key值为“话题名称”、“发布者PubId”、“发布者进程名称”通过“#”组合的字符串,如“话题名称#发布者进程名称#发布者PubId”。
其中“话题名称”是指用户消息对应的话题名称,“发布者PubId”是指创建该话题发布者时,生成的发布者标识Id,“发布者进程名称”是指多任务软件系统对各任务进程进行命名,消息中间件获取消息发布者所处任务进程的进程名称。
举例发布消息的话题为“test_topic”,创建话题发布者生成的PubId为1,该消息中间件所处的任务进程,即发布者进程名称为“test_node”,则发布者临时消息映射表的key值为“test_topic#test_node#1”。
②发布者临时消息映射表的value值为存储上述发布者临时消息结构体的消息队列,消息队列可缓存临时消息的数量是一个固定值M,M值可作为参数由用户设定。
发布者临时消息映射表可表示为map{strKey,queue<PubTempMsg>}。
③发布消息时,先根据“话题名称”、“发布者标识PubId”、“发布者进程名”组合生成映射表key值strKey,查看临时消息映射表中strKey对应的临时消息队列的消息数量。如果队列中消息总数不大于M,直接将新消息添加到队列末尾;如果队列中消息总数大于M,删除队列头部的一条消息,再将新消息添加到队列末尾。
(5)消息中间件接收消息时,匹配话题采集参数,决定需要缓存的话题种类后,创建接收者临时消息映射表,将上述接收者临时消息缓存到接收者临时消息映射表。具体方法如下:
①接收者临时消息映射表的key值为“话题名称”、“接收者进程名称”通过“#”组合的字符串,如“话题名称#接收者进程名称”。
其中“话题名称”是指用户消息对应的话题名称,“接收者进程名称”是指多任务软件系统对各任务进程进行命名,消息中间件获取消息接收者所处任务进程的进程名称。
举例接收的消息话题为“test_topic”,该消息中间件所处的任务进程(即接收者进程)名称为“test_node”,则接收者临时消息映射表的key值为“test_topic#test_node”。
②接收者临时消息映射表的value值为存储上述接收者临时消息结构体的消息队列,消息队列可缓存临时消息的数量是一个固定值M,M值可作为参数由用户设定。
接收者临时消息映射表可表示为map{strKey,queue<SubTempMsg>}。
③消息中间件接收消息时,先根据“话题名称”、“接收者进程名”组合生成映射表key值strKey,查看临时消息映射表中strKey对应的临时消息队列的消息数量。如果队列中消息总数不大于M,直接将新消息添加到队列末尾;如果队列中消息总数大于M,删除队列头部的一条消息,再将新消息添加到队列末尾。
消息中间件发布消息时,调用算子匹配规则库的算子匹配函数,生成预警算子匹配结果,以决定是否触发消息快照自动回传。
算子匹配规则已经在调试工具控制端自动生成并编译成动态库动态加载,消息发布时,只需要调用该库提供的算子匹配函数进行匹配计算即可。
步骤S102中基于所述匹配结果生成快照回传指令,具体包括:
步骤S102c:判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令。
步骤S102c具体过程为:
1.快照回传指令结构
快照回传指令结构包括快照回传触发模式、需要回传快照的机器平台ID和需要回传快照的任务进程名称。
快照回传触发模式参数包括手动模式和自动模式。
机器平台ID参数指需要回传快照的机器平台的ID编号,ID为-1表示需回传所有机器平台的快照。
需要回传快照的任务进程名称参数,各任务进程名称之间用分号间隔,如task1;task2;task3。如果任务进程名称为空,表示需回传多任务软件系统所有任务进程的快照。
2.快照回传指令触发方式
快照回传指令触发分为手动触发及自动触发方式,具体内容如下:
(1)手动触发是指通过调试工具控制端向部分机器平台或全部机器平台多任务软件系统的快照采集模块下达快照回传指令。可由任务监控、调试者根据任务系统状态下达手动快照回传指令。
调试工具控制端提供连续快照功能,通过扩大发布者与接收者临时消息队列可缓存的临时消息的数量M,即可获取较长连续时间段内任务系统的消息。调试工具控制端关闭连续快照功能时,只需将临时消息数量M减小。
手动快照回传指令如果为{manual,3,“”},表示回传3号机器平台多任务软件系统所有任务进程的快照。手动快照回传指令如果为{manual,-1,task1;task2;task3”},表示回传所有机器平台多任务软件系统的task1、task2、task3任务进程的快照。
(2)自动触发第一种情况是指多任务软件系统的快照采集模块监测到其维护的任务进程列表中的进程异常退出时,主动触发自动快照回传指令,设置快照回传指令参数的值依次为自动模式、本机器平台的ID编号、任务进程名称为空,即{auto,本机器平台ID编号,“”},要求回传本机器平台所有任务进程此刻的消息快照,提供尽可能多的数据反馈任务现场。
自动触发第二种情况是指消息中间件发布消息,将消息缓存到发布者临时消息映射表时,调用预警算子匹配规则库,如果预警算子匹配,自动触发快照回传指令。设置快照回传指令参数的实际值依次为自动模式、本机器平台的ID编号、上述匹配预警算子的消息中间件所处的任务进程名称,即{auto,本机器平台ID编号,“taskxx”},要求回传本机平台匹配预警算子的任务进程的快照。
本步骤中,如果消息中间件调用预警算子匹配规则库得到为真的匹配结果,则自动触发快照回传指令。设置快照回传指令参数的实际值依次为自动模式、本机器平台的ID编号、上述消息中间件所处的任务进程名称,即{auto,本机器平台ID编号,“taskxx”},要求回传本机当前任务进程的快照。
在本步骤中,将调试参数和预警算子匹配规则库中的预设调试参数进行匹配,提供给终端一种无代码或低代码的消息内容查看和设置预警算子的方法,使得系统集成调试人员可以从模块间的交互数据分析和定位软件故障,无需深入到模块内部的细节。发送快照回传指令,并在后续根据快照回传指令生成消息快照,能够不中断现有任务执行和不读写磁盘,快速低开销地保存模块间交互现场,实现任务自动监测。
步骤S103中基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,具体包括:
步骤S103a:解析快照回传指令中的调试触发参数得到快照回传触发模式;
步骤S103b:当所述快照回传触发模式为自动时,设置调试模式标签内容为自动模式,并基于调试模式标签内容和消息的运行参数结合层级结构生成消息快照;
步骤S103c:当所述快照回传触发模式为手动时,设置调试模式标签内容为手动模式,并基于消息的运行参数结合层级结构生成消息快照。
步骤S103具体执行过程如下:
消息中间件匹配预警算子,触发消息快照自动回传。触发快照回传指令,多任务软件系统的快照采集模块接收到快照回传指令后,获取各任务模块消息中间件缓存的临时消息,生成整个多任务软件系统的消息快照,并将其发送给调试工具控制端。具体内容如下:
多任务软件系统的快照采集模块接收到快照回传指令后,解析快照回传指令参数,获取快照指令参数所设置任务进程的消息中间件缓存的临时消息,生成整个多任务软件系统的消息快照。具体方法如下:
(1)快照采集模块接收到手动快照回传指令,标志当前调试方式为手动;快照采集模块接收到自动快照回传指令,标志当前调试方式为自动。并将调试方式填充到“消息快照”结构。
(2)“消息快照”结构如下:
包含调试方式、各任务进程发布者消息、各任务进程接收者消息。
按照任务进程、话题、发布者、消息内容的层级关系组织生成各任务进程发布者消息;按照任务进程、话题、接收者列表、消息内容的层级关系组织生成接收者消息。设计层级式消息快照组织方式,相较于平铺式消息管理方式,尽可能减小了消息快照体量,又完整保存了方便任务调试、消息定位的各消息字段。
具体的消息快照结构如图3所示,可用二进制数据组织和管理消息快照。
(3)快照采集模块解析快照回传指令参数,获取快照指令参数所设置任务进程的消息中间件缓存的临时消息,生成整个多任务软件系统的消息快照。
结合图4,具体过程如下:
①快照采集模块向快照指令参数所设置的任务进程请求获取其消息中间件所缓存的临时消息快照。
②快照指令参数所设置的任务进程读取其消息中间件的“发布者临时消息映射表”和“接收者临时消息映射表”,按照“消息快照”结构中发布者及接收者消息节点层级下进程节点的消息组织方式,生成该任务模块的发布者消息及接收者消息。任务进程读取其消息中间件的临时消息映射表期间,暂停向临时消息映射表缓存临时消息;读取结束后,恢复临时消息缓存。
③快照指令参数所设置的任务进程将生成的发布者消息及接收者消息组合成该任务进程的临时消息快照,并回传到快照采集模块。临时消息快照的结构与消息快照相同。
④快照采集模块接收到快照指令参数所设置的任务进程回传的临时消息快照后,提取临时消息快照中发布者消息节点<publishers>以及接收者消息节点<subcribers>下的进程<process>节点信息,填充到快照采集模块维护的整体消息快照结构中,从而生成整个多任务软件系统的消息快照。
快照采集模块将整个多任务软件系统的消息快照发送给调试工具控制端。
在本步骤中,通过定制消息中间件模块的方式,无需修改现有多任务软件的实现,就可以实现快照获取;生成消息快照,描述任务交互现场,为调试人员提供有组织、有条理的任务现场数据,提高了调试效率,实现不中断现有任务执行,用消息快照的方式快速低开销地保存模块间交互现场,实现了对复杂系统的故障监测,减小了故障监测难度,能够实现任务自动监测,及时进行预警和调试分析。
实施例4:
基于同一种构思本发明还提供了一种多任务软件系统端,如图5所示包括:
消息中间件模块,用于获取多任务软件的消息,将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令;
快照采集模块,用于基于所述快照回传指令从所述消息中间件模块的临时消息缓存队列中获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端。
多任务软件系统端还包括任务模块,具体用于:
各任务模块通过自身的消息中间件发布消息或接收消息。
消息中间件模块具体包括:
消息获取子模块,用于获取多任务软件的消息;
第一匹配子模块,用于将所述状态信息和话题采集参数进行匹配;
第二匹配子模块,用于若所述状态信息与所述话题采集参数匹配,则将匹配的消息存入临时消息缓存队列,并基于所述消息的实际数据和预警算子匹配规则库得到匹配结果,否则不将消息存入临时消息缓存队列;
快照回传指令触发子模块,用于判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令。
其中,第二匹配模块,具体包括:
将所述实际数据输入预警算子匹配规则库中得到匹配结果。
消息中间件模块,具体用于:
各任务模块的消息中间件在发送或接收消息时,访问预设的话题采集参数,决定快照开关及话题采集种类。获取本任务模块关键信息生成临时消息,并缓存固定数量的临时消息到临时消息队列,同时通过调用动态加载的预警算子匹配规则库的算子匹配函数,判断是否自动触发快照回传指令。
以下具体介绍多任务系软件统的消息中间件。
多任务软件系统设计基于话题(topic)发布、订阅模式的统一接口消息中间件,软件系统的所有消息交互通过消息中间件进行。
1.消息中间件介绍
(1)提供createPublisher接口即创建话题发布者接口,用来创建话题发布者,并向消息中心模块注册话题发布者;提供createSubscriber接口即创建话题订阅者接口,用来创建话题接收者并绑定用户消息接收回调函数,并向消息中心模块注册话题接收者。createPublisher与createSubscriber接口需提供“话题所属模块名称”ModeName参数。多任务系统中可包括若干任务模块,如数据采集模块、数据处理模块、数据存储模块等。创建话题发布者与接收者时填写任务模块ModeName信息,便于消息分类及追踪消息。
消息中心是消息中间件中管理话题发布者和接收者的模块,通过消息中心模块可获取话题发布者注册的话题名称等信息,可获取话题接收者对应的话提名称及绑定的接收函数等信息。
(2)提供publish接口即发布消息接口,用户使用该接口通过发布话题的方式发送消息。
消息发送后,其他订阅过相同话题的接收者会收到用户消息,从而完成消息通信。该接口参数如下:
PubID:已创建的话题发布者标识;
Msg:需要发布的用户消息。设计用户消息基类,所有用户消息应该继承该消息基类;用户消息基类提供默认的预警算子匹配函数,算子匹配函数的返回值默认为false,表示预警算子不匹配。
DestID:目标平台ID,消息中间件支持向分布式多任务软件系统通信域内的指定机器平台发送消息。默认值为-1,表示向通信域内所有机器平台发送消息;
DestName:目标平台进程名称,消息中间件支持向分布式多任务软件系统通信域内机器平台上的某个进程发送消息,默认为空,表示向通信域内机器平台上的所有进程发送消息。与DestID配合使用,二者构成目标通信节点唯一标识。DestID与DestName组合构成的目标通信节点如表11DestID与DestName组合目标通信节点表所示。
表11DestID与DestName组合目标通信节点表
2.消息中间件缓存临时消息
消息中间件缓存临时消息。消息中间件发送和接收消息时,匹配预设话题采集参数,获取话题发布者与接收者所处任务模块的关键信息,生成临时消息,缓存固定数量的临时消息至临时消息队列。
(1)消息中间件发送和接收消息时匹配话题采集参数,决定缓存的临时消息种类。具体方法如下:
消息中间件发送(或接收)消息时,访问话题采集参数的共享内存值,如果话题采集参数的进程名称不为空并且不包含本任务进程名称,则本进程不缓存发布者(或接收者)临时消息;
否则判断话题采集参数的模块名称与上述消息发布者(或接收者)创建时所设置的模块名称是否一致,如果话题采集参数的模块名称不为空并且不包含本消息发布者(或接收者)的模块名称,则本进程不缓存发布者(或接收者)临时消息;
否则判断话题采集参数的话题名称与本话题名称是否一致,如果话题采集参数的话题名称不为空并且不包含本话题名称,则本进程不缓存发布者(或接收者)临时消息,否则将上述发布者(或接收者)临时消息缓存到发布者(或接收者)临时消息映射表。举例如下:
本任务进程为task_1,创建话题topic1的发布者时所设置的模块名称为“数据采集模块”。
如上述实施例3中表8话题采集参数表中的示例1的各项话题采集参数,表示进程名称、模块名称、话题名称都匹配,因此本任务进程的消息中间件缓存该发布者消息到发布者临时消息映射表。
如表8中的示例2的各项话题采集参数,表示进程名称匹配,但数据处理模块不匹配,即调试者不关注数据处理模块的消息,因此不缓存该发布者消息。
(2)发布者临时消息的结构如上述实施例3中表9所示的内容,这里不再赘述。
临时消息结构体分为临时消息头部与消息体部分,结构体可命名为PubTempMsg,具体内容如下:
消息号:用户消息的消息号,用于唯一标识该消息。该值在发布消息时由消息中间件自动生成并填充到消息中。
时间戳:消息发布时间。
发布者线程名称:多任务软件系统的任务进程包含多线程的情况下,需对各线程命名,消息中间件获取消息发布者所处任务线程的线程名称。便于消息快照分析时迅速定位消息来源。
接收者平台ID:用户发送消息时,在publish接口中指定的接收者机器ID,如果接收者ID为-1,表示向通信域内所有机器平台发送消息。
接收者平台IP:用户发送消息时,在publish接口中指定的接收者机器ID所对应的IP地址,如果接收者ID为-1,表示向通信域内所有机器平台发送消息。
接收者进程名称:用户发送消息时,在publish接口中指定向接收者平台上特定进程发送消息,如果接收者进程名为空,表示向接收者平台上所有进程发送消息。
序列化的消息内容:发布该话题时对应的用户消息,消息中间件将其序列化以进行传输。
通过获取发布者任务模块信息,生成发布者临时消息,可为任务调试者提供完备信息,迅速定位、追踪消息。
(3)接收者临时消息的结构如上述实施例3中表10所示的内容,这里不再赘述。
临时消息结构体分为临时消息头部与消息体部分,结构体可命名为SubTempMsg,具体内容如下:
消息号:用户接收到的消息的消息号,用于唯一标识该消息,该值在发布者发送消息时生成。
时间戳:消息接收时间。
话题接收者唯一标识SubId列表:该话题所有接收者的唯一标识SubId列表。创建话题接收者时,消息中间件会维护该话题的所有已注册接收者信息,包括唯一标识SubId。
话题接收者线程列表:该话题所有接收者所处线程的线程名称列表。多任务软件系统的任务进程包含多线程的情况下,需对各线程命名,消息中间件获取消息接收者所处任务线程的线程名称。便于消息快照分析时迅速定位消息来源。
序列化的消息内容:接收该话题时对应的用户消息,消息中间件将其序列化以进行传输。
通过获取接收者任务模块信息,生成接收者临时消息,可为任务调试者提供完备信息,迅速定位、追踪消息。
(4)消息中间件发送消息时,匹配话题采集参数,决定需要缓存的话题种类后,消息中间件创建发布者临时消息映射表,将上述发布者临时消息缓存到发布者临时消息映射表。具体方法如下:
①发布者临时消息映射表的key值为“话题名称”、“发布者PubId”、“发布者进程名称”通过“#”组合的字符串,如“话题名称#发布者进程名称#发布者PubId”。
其中“话题名称”是指用户消息对应的话题名称,“发布者PubId”是指创建该话题发布者时,生成的发布者标识Id,“发布者进程名称”是指多任务软件系统对各任务进程进行命名,消息中间件获取消息发布者所处任务进程的进程名称。
举例发布消息的话题为“test_topic”,创建话题发布者生成的PubId为1,该消息中间件所处的任务进程,即发布者进程名称为“test_node”,则发布者临时消息映射表的key值为“test_topic#test_node#1”。
②发布者临时消息映射表的value值为存储上述发布者临时消息结构体的消息队列,消息队列可缓存临时消息的数量是一个固定值M,M值可作为参数由用户设定。
发布者临时消息映射表可表示为map{strKey,queue<PubTempMsg>}。
③发布消息时,先根据“话题名称”、“发布者标识PubId”、“发布者进程名”组合生成映射表key值strKey,查看临时消息映射表中strKey对应的临时消息队列的消息数量。如果队列中消息总数不大于M,直接将新消息添加到队列末尾;如果队列中消息总数大于M,删除队列头部的一条消息,再将新消息添加到队列末尾。
(5)消息中间件接收消息时,匹配话题采集参数,决定需要缓存的话题种类后,创建接收者临时消息映射表,将上述接收者临时消息缓存到接收者临时消息映射表。具体方法如下:
①接收者临时消息映射表的key值为“话题名称”、“接收者进程名称”通过“#”组合的字符串,如“话题名称#接收者进程名称”。
其中“话题名称”是指用户消息对应的话题名称,“接收者进程名称”是指多任务软件系统对各任务进程进行命名,消息中间件获取消息接收者所处任务进程的进程名称。
举例接收的消息话题为“test_topic”,该消息中间件所处的任务进程(即接收者进程)名称为“test_node”,则接收者临时消息映射表的key值为“test_topic#test_node”。
②接收者临时消息映射表的value值为存储上述接收者临时消息结构体的消息队列,消息队列可缓存临时消息的数量是一个固定值M,M值可作为参数由用户设定。
接收者临时消息映射表可表示为map{strKey,queue<SubTempMsg>}。
③消息中间件接收消息时,先根据“话题名称”、“接收者进程名”组合生成映射表key值strKey,查看临时消息映射表中strKey对应的临时消息队列的消息数量。如果队列中消息总数不大于M,直接将新消息添加到队列末尾;如果队列中消息总数大于M,删除队列头部的一条消息,再将新消息添加到队列末尾。
3.消息中间件匹配预警算子,触发消息快照自动回传
消息中间件发布消息时,调用算子匹配规则库的算子匹配函数,生成预警算子匹配结果,以决定是否触发消息快照自动回传。
算子匹配规则已经在调试工具控制端自动生成并编译成动态库动态加载,消息发布时,只需要调用该库提供的算子匹配函数进行匹配计算即可。
快照回传指令触发子模块判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令。具体内容如下:
(1)快照回传指令结构
快照回传指令结构包括快照回传触发模式、需要回传快照的机器平台ID和需要回传快照的任务进程名称。
快照回传触发模式参数包括手动模式和自动模式。
机器平台ID参数指需要回传快照的机器平台的ID编号,ID为-1表示需回传所有机器平台的快照。
需要回传快照的任务进程名称参数,各任务进程名称之间用分号间隔,如task1;task2;task3。如果任务进程名称为空,表示需回传多任务软件系统所有任务进程的快照。
(2)快照回传指令触发方式
快照回传指令触发分为手动触发及自动触发方式,具体内容如下:
1)手动触发是指通过调试工具控制端向部分机器平台或全部机器平台多任务软件系统的快照采集模块下达快照回传指令。可由任务监控、调试者根据任务系统状态下达手动快照回传指令。
调试工具控制端提供连续快照功能,通过扩大发布者与接收者临时消息队列可缓存的临时消息的数量M,即可获取较长连续时间段内任务系统的消息。调试工具控制端关闭连续快照功能时,只需将临时消息数量M减小。
手动快照回传指令如果为{manual,3,“”},表示回传3号机器平台多任务软件系统所有任务进程的快照。手动快照回传指令如果为{manual,-1,task1;task2;task3”},表示回传所有机器平台多任务软件系统的task1、task2、task3任务进程的快照。
2)自动触发第一种情况是指多任务软件系统的快照采集模块监测到其维护的任务进程列表中的进程异常退出时,主动触发自动快照回传指令,设置快照回传指令参数的值依次为自动模式、本机器平台的ID编号、任务进程名称为空,即{auto,本机器平台ID编号,“”},要求回传本机器平台所有任务进程此刻的消息快照,提供尽可能多的数据反馈任务现场。
自动触发第二种情况是指消息中间件发布消息,将消息缓存到发布者临时消息映射表时,调用预警算子匹配规则库,如果预警算子匹配,自动触发快照回传指令。设置快照回传指令参数的实际值依次为自动模式、本机器平台的ID编号、上述匹配预警算子的消息中间件所处的任务进程名称,即{auto,本机器平台ID编号,“taskxx”},要求回传本机平台匹配预警算子的任务进程的快照。
本实例中,如果消息中间件调用预警算子匹配规则库得到为真的匹配结果,则自动触发快照回传指令。设置快照回传指令参数的实际值依次为自动模式、本机器平台的ID编号、上述消息中间件所处的任务进程名称,即{auto,本机器平台ID编号,“taskxx”},要求回传本机当前任务进程的快照。
在本实施例中,将调试参数和预警算子匹配规则库中的预设调试参数进行匹配,提供给终端一种无代码或低代码的消息内容查看和设置预警算子的方法,使得系统集成调试人员可以从模块间的交互数据分析和定位软件故障,无需深入到模块内部的细节。通过定制消息中间件模块的方式,无需修改现有多任务软件的实现,就可以实现快照获取。发送快照回传指令,并在后续根据快照回传指令生成消息快照,能够不中断现有任务执行和不读写磁盘,快速低开销地保存模块间交互现场,实现任务自动监测。
快照采集模块,具体包括:
参数解析子模块,用于解析快照回传指令中的调试触发参数得到快照回传触发模式;
第一快照生成子模块,用于当所述快照回传触发模式为自动时,设置调试模式标签内容为自动模式,并基于调试模式标签内容和消息的运行参数结合层级结构生成消息快照;
第二快照生成子模块,用于当所述快照回传触发模式为手动时,设置调试模式标签内容为手动模式,并基于消息的运行参数结合层级结构生成消息快照;
发送子模块,用于将所述消息快照发送给调试工具控制端。
快照采集模块,具体用于:
启动并维护本机器平台各任务模块进程信息列表,监测各任务进程运行状态。
(1)快照采集模块启动后,各任务模块(进程)向快照采集模块注册其进程信息,快照采集模块维护本机器平台多任务软件系统各任务模块的进程信息列表。
(2)快照采集模块监测其维护的任务模块进程信息列表中的各任务进程是否正常运行。如果发生进程异常退出,自动触发快照回传指令。
消息中间件匹配预警算子,触发消息快照自动回传。触发快照回传指令,多任务软件系统的快照采集模块接收到快照回传指令后,获取各任务模块消息中间件缓存的临时消息,生成整个多任务软件系统的消息快照,并将其发送给调试工具控制端。具体内容如下:
多任务软件系统的快照采集模块接收到快照回传指令后,解析快照回传指令参数,获取快照指令参数所设置任务进程的消息中间件缓存的临时消息,生成整个多任务软件系统的消息快照。具体方法如下:
(1)快照采集模块接收到手动快照回传指令,标志当前调试方式为手动;快照采集模块接收到自动快照回传指令,标志当前调试方式为自动。并将调试方式填充到“消息快照”结构。
(2)“消息快照”结构如下:
包含调试方式、各任务进程发布者消息、各任务进程接收者消息。
按照任务进程、话题、发布者、消息内容的层级关系组织生成各任务进程发布者消息;按照任务进程、话题、接收者列表、消息内容的层级关系组织生成接收者消息。设计层级式消息快照组织方式,相较于平铺式消息管理方式,尽可能减小了消息快照体量,又完整保存了方便任务调试、消息定位的各消息字段。
具体的消息快照结构如图3所示,可用二进制数据组织和管理消息快照。
(3)快照采集模块解析快照回传指令参数,获取快照指令参数所设置任务进程的消息中间件缓存的临时消息,生成整个多任务软件系统的消息快照。
结合图4,具体过程如下:
①快照采集模块向快照指令参数所设置的任务进程请求获取其消息中间件所缓存的临时消息快照。
②快照指令参数所设置的任务进程读取其消息中间件的“发布者临时消息映射表”和“接收者临时消息映射表”,按照“消息快照”结构中发布者及接收者消息节点层级下进程节点的消息组织方式,生成该任务模块的发布者消息及接收者消息。任务进程读取其消息中间件的临时消息映射表期间,暂停向临时消息映射表缓存临时消息;读取结束后,恢复临时消息缓存。
③快照指令参数所设置的任务进程将生成的发布者消息及接收者消息组合成该任务进程的临时消息快照,并回传到快照采集模块。临时消息快照的结构与消息快照相同。
④快照采集模块接收到快照指令参数所设置的任务进程回传的临时消息快照后,提取临时消息快照中发布者消息节点<publishers>以及接收者消息节点<subcribers>下的进程<process>节点信息,填充到快照采集模块维护的整体消息快照结构中,从而生成整个多任务软件系统的消息快照。
快照采集模块将整个多任务软件系统的消息快照发送给调试工具控制端。
在本实施例中,生成的消息快照,描述任务交互现场,为调试人员提供有组织、有条理的任务现场数据,提高了调试效率,实现不中断现有任务执行,用消息快照的方式快速低开销地保存模块间交互现场,实现了对复杂系统的故障监测,减小了故障监测难度,能够实现任务自动监测,及时进行预警和调试分析。
实施例5:
本发明还提供一种基于消息快照的多任务软件监测系统,如图6所示包括:
调试工具控制端,用于基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;基于消息快照对多任务软件进行监测报警处理;
多任务软件系统端,用于获取多任务软件的消息,将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令,基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端。
结合图7,本实施例中的调试工具控制端的具体实现参见实施例2所提供的一种调试工具控制端所涉及的功能,这里不再赘述。
本实施例中的多任务软件系统端的具体实现参见实施例4所提供的一种多任务软件系统端所涉及的功能,这里不再赘述。
显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

Claims (12)

1.一种基于消息快照的多任务软件监测方法,其特征在于,包括:
基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;
基于消息快照对多任务软件进行监测报警处理;
所述基于预警算子参数生成预警算子匹配规则库,包括:
基于所述预警算子参数生成算子匹配函数代码;
基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库;
所述基于所述预警算子参数生成算子匹配函数代码,包括:
解析所述预警算子参数中的边界值算子得到预设边界值,并基于所述预设边界值生成边界值比较代码;
解析所述预警算子参数中的关键字算子得到预设关键字,并基于所述预设关键字生成关键字匹配代码;
基于所述预警算子参数中的消息长度算子生成消息长度匹配代码;
解析所述预警算子参数中的自定义算子得到自定义算子代码;
基于所述边界值比较代码,自定义算子代码,关键字匹配代码和消息长度匹配代码生成算子匹配函数代码;
其中,所述预警算子参数包括:边界值算子,自定义算子,关键字算子和消息长度算子;
所述算子匹配函数代码包括:边界值比较代码,关键字匹配代码,消息长度匹配代码和自定义算子代码。
2.如权利要求1所述的方法,其特征在于,所述基于消息快照对多任务软件进行监测报警处理,包括:
解析消息快照中的运行参数得到调试模式标签内容;
若所述调试模式标签内容为自动,则报警提醒调试人员多任务软件运行异常,否则不进行监测报警处理。
3.一种调试工具控制端,其特征在于,包括:
综合处理模块,用于基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;
监测处理模块,用于基于消息快照对多任务软件进行监测报警处理;
所述综合处理模块,包括:
第一代码生成子模块,用于基于所述预警算子参数生成算子匹配函数代码;
第二代码生成子模块,用于基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
规则库生成子模块,用于编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库;
信息发送子模块,用于将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端;
快照接收子模块,用于接收多任务软件系统端发送的消息快照;所述第一代码生成子模块,包括:
比较代码生成单元,用于解析所述预警算子参数中的边界值算子得到预设边界值,并基于所述预设边界值生成边界值比较代码;
第一匹配代码生成单元,用于解析所述预警算子参数中的关键字算子得到预设关键字,并基于所述预设关键字生成关键字匹配代码;
第二匹配代码生成单元,用于基于所述预警算子参数中的消息长度算子生成消息长度匹配代码;
自定义算子代码生成单元,用于解析所述预警算子参数中的自定义算子得到自定义算子代码;
函数代码生成单元,用于基于所述边界值比较代码,自定义算子代码,关键字匹配代码和消息长度匹配代码生成算子匹配函数代码;
其中,所述预警算子参数包括:边界值算子,自定义算子,关键字算子和消息长度算子;
所述算子匹配函数代码包括:边界值比较代码,关键字匹配代码,消息长度匹配代码和自定义算子代码。
4.如权利要求3所述的调试工具控制端,其特征在于,所述监测处理模块,包括:
解析子模块,用于解析消息快照中的运行参数得到调试模式标签内容;
异常监测处理子模块,用于若所述调试模式标签内容为自动,则报警提醒调试人员多任务软件运行异常,否则不进行监测报警处理。
5.一种基于消息快照的多任务软件监测方法,其特征在于,包括:
获取多任务软件的消息;
将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令;
基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端;
所述将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,包括:
将所述状态信息和话题采集参数进行匹配;
若所述状态信息与所述话题采集参数匹配,则将匹配的消息存入临时消息缓存队列,并基于所述消息的实际数据和预警算子匹配规则库得到匹配结果,否则不将消息存入临时消息缓存队列;
其中,所述状态信息包括:发布话题的任务进程名称、发布话题的模块种类、话题名称、话题发布者线程名称,话题发布者标识,目标平台ID和目标平台进程名称;
所述话题采集参数包括:进程名称、模块种类和话题名称;
所述预警算子匹配规则库的生成过程,包括:
基于预警算子参数生成算子匹配函数代码;
基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库。
6.如权利要求5所述的方法,其特征在于,所述基于所述消息的实际数据和预警算子匹配规则库生成匹配结果,包括:
将所述实际数据输入预警算子匹配规则库中得到匹配结果。
7.如权利要求6所述的方法,其特征在于,所述基于所述匹配结果生成快照回传指令,包括:
判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令;
其中,所述调试触发参数包括:快照回传触发模式,需要回传快照的机器平台ID和需要回传快照的任务进程名称。
8.如权利要求7所述的方法,其特征在于,所述基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,包括:
解析快照回传指令中的调试触发参数得到快照回传触发模式;
当所述快照回传触发模式为自动时,设置调试模式标签内容为自动模式,并基于调试模式标签内容和消息的运行参数结合层级结构生成消息快照;
当所述快照回传触发模式为手动时,设置调试模式标签内容为手动模式,并基于消息的运行参数结合层级结构生成消息快照;
其中,所述运行参数包括:任务进程,话题名称,话题发布方信息,话题接收方信息,消息内容。
9.一种多任务软件系统端,其特征在于,包括:
消息中间件模块,用于获取多任务软件的消息,将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令;
快照采集模块,用于基于所述快照回传指令从所述消息中间件模块的临时消息缓存队列中获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端;
所述消息中间件模块,包括:
消息获取子模块,用于获取多任务软件的消息;
第一匹配子模块,用于将所述状态信息和话题采集参数进行匹配;
第二匹配子模块,用于若所述状态信息与所述话题采集参数匹配,则将匹配的消息存入临时消息缓存队列,并基于所述消息的实际数据和预警算子匹配规则库得到匹配结果,否则不将消息存入临时消息缓存队列;
快照回传指令触发子模块,用于判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令;
其中,所述状态信息包括:发布话题的任务进程名称、发布话题的模块种类、话题名称、话题发布者线程名称,话题发布者标识,目标平台ID和目标平台进程名称;
所述话题采集参数包括:进程名称、模块种类和话题名称;
所述调试触发参数包括:快照回传触发模式,需要回传快照的机器平台ID和需要回传快照的任务进程名称;
所述预警算子匹配规则库的生成过程,包括:
基于预警算子参数生成算子匹配函数代码;
基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库。
10.如权利要求9所述的多任务软件系统端,其特征在于,所述第二匹配子模块,具体用于:
将所述实际数据输入预警算子匹配规则库中得到匹配结果。
11.如权利要求10所述的多任务软件系统端,其特征在于,所述快照采集模块,包括:
参数解析子模块,用于解析快照回传指令中的调试触发参数得到快照回传触发模式;
第一快照生成子模块,用于当所述快照回传触发模式为自动时,设置调试模式标签内容为自动模式,并基于调试模式标签内容和消息的运行参数结合层级结构生成消息快照;
第二快照生成子模块,用于当所述快照回传触发模式为手动时,设置调试模式标签内容为手动模式,并基于消息的运行参数结合层级结构生成消息快照;
发送子模块,用于将所述消息快照发送给调试工具控制端;
其中,所述运行参数包括:任务进程,话题名称,话题发布方信息,话题接收方信息,消息内容。
12.一种基于消息快照的多任务软件监测系统,其特征在于,包括:
调试工具控制端,用于基于预警算子参数生成预警算子匹配规则库,将所述预警算子匹配规则库和话题采集参数发送给多任务软件系统端,并接收多任务软件系统端发送的消息快照;基于消息快照对多任务软件进行监测报警处理;
多任务软件系统端,用于获取多任务软件的消息,将所述消息的状态信息和实际数据分别与话题采集参数和预警算子匹配规则库进行匹配得到匹配结果,并基于所述匹配结果生成快照回传指令,基于所述快照回传指令从临时消息缓存队列获取消息,生成消息快照,并将所述消息快照发送给调试工具控制端;
所述多任务软件系统端,具体用于:
获取多任务软件的消息;
将所述状态信息和话题采集参数进行匹配;
若所述状态信息与所述话题采集参数匹配,则将匹配的消息存入临时消息缓存队列,并基于所述消息的实际数据和预警算子匹配规则库得到匹配结果,否则不将消息存入临时消息缓存队列;
判断所述消息的实际数据和预警算子匹配规则库得到的匹配结果是否为真,若匹配结果为真,则基于消息的调试触发参数生成快照回传指令,否则不生成快照回传指令;
其中,所述状态信息包括:发布话题的任务进程名称、发布话题的模块种类、话题名称、话题发布者线程名称,话题发布者标识,目标平台ID和目标平台进程名称;
所述话题采集参数包括:进程名称、模块种类和话题名称;
所述调试触发参数包括:快照回传触发模式,需要回传快照的机器平台ID和需要回传快照的任务进程名称;
所述基于预警算子参数生成预警算子匹配规则库,包括:
基于预警算子参数生成算子匹配函数代码;
基于话题名称和算子匹配函数代码生成消息中间件算子匹配代码;
编译所述算子匹配函数代码和所述消息中间件算子匹配代码生成预警算子匹配规则库。
CN202310792237.7A 2023-06-30 2023-06-30 一种基于消息快照的多任务软件监测方法及系统 Active CN116881076B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310792237.7A CN116881076B (zh) 2023-06-30 2023-06-30 一种基于消息快照的多任务软件监测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310792237.7A CN116881076B (zh) 2023-06-30 2023-06-30 一种基于消息快照的多任务软件监测方法及系统

Publications (2)

Publication Number Publication Date
CN116881076A CN116881076A (zh) 2023-10-13
CN116881076B true CN116881076B (zh) 2024-07-30

Family

ID=88257882

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310792237.7A Active CN116881076B (zh) 2023-06-30 2023-06-30 一种基于消息快照的多任务软件监测方法及系统

Country Status (1)

Country Link
CN (1) CN116881076B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382033A (zh) * 2020-03-09 2020-07-07 山东浪潮通软信息科技有限公司 一种通用的信息系统预警方法和预警工具
CN113128179A (zh) * 2021-04-29 2021-07-16 成都康赛信息技术有限公司 一种基于指标体系的数据预警方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721920A (zh) * 2021-08-30 2021-11-30 济南浪潮数据技术有限公司 一种应用组件的诊断方法、系统、电子设备及存储介质
CN114328101A (zh) * 2021-12-24 2022-04-12 武汉众智数字技术有限公司 一种软件故障定位与修复的方法与系统
CN114328268A (zh) * 2022-01-14 2022-04-12 中国平安人寿保险股份有限公司 基于流量回放的软件测试方法、装置、设备及介质
CN114844771B (zh) * 2022-05-05 2024-03-08 亚信科技(中国)有限公司 微服务系统的监测方法、装置、存储介质、程序产品

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382033A (zh) * 2020-03-09 2020-07-07 山东浪潮通软信息科技有限公司 一种通用的信息系统预警方法和预警工具
CN113128179A (zh) * 2021-04-29 2021-07-16 成都康赛信息技术有限公司 一种基于指标体系的数据预警方法

Also Published As

Publication number Publication date
CN116881076A (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
CA2244293C (en) A process and apparatus for tracing software entities in a distributed system
US8689239B2 (en) Dynamic event collection and structured storage
CN110196888B (zh) 基于Hadoop的数据更新方法、装置、系统及介质
CN109388537B (zh) 运行信息跟踪方法、装置及计算机可读存储介质
US6584491B1 (en) Arrangement for monitoring a progress of a message flowing through a distributed multiprocess system
CN110191000B (zh) 一种数据处理方法、消息追踪监控方法和分布式系统
CN112529528B (zh) 基于大数据流计算的工作流监控与告警方法、装置及系统
CN114265758A (zh) 基于软硬件一体化架构的全链路监控方法及装置
US11294740B2 (en) Event to serverless function workflow instance mapping mechanism
US20180143897A1 (en) Determining idle testing periods
CN114218052B (zh) 一种业务交互图生成方法、装置、设备及存储介质
CN113608969A (zh) 业务系统运行监控系统及方法
CN110851324A (zh) 基于日志的巡检处理方法、装置以及电子设备、存储介质
CN111339118A (zh) 基于Kubernetes的资源变更历史记录方法及装置
CN105069029B (zh) 一种实时etl系统及方法
CN115104336A (zh) 跟踪和公开用于生成分析的数据
CN116881076B (zh) 一种基于消息快照的多任务软件监测方法及系统
CN111752838A (zh) 问题排查方法、装置、服务器及存储介质
CN110908708B (zh) 一种代码发布方法、装置和系统
CN112162954B (zh) 用户操作日志生成、路径的定位方法、装置、设备及介质
CN112416719B (zh) 针对数据库容器的监控处理方法、系统、设备和存储介质
CN110413496B (zh) 一种实现电子证照运行数据组件化收集的方法
CN114443343A (zh) 一种服务接口反馈异常信息方法、装置、设备、存储介质
CN112596974A (zh) 一种全链路监控方法、装置、设备和存储介质
CN113407504B (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
GR01 Patent grant
GR01 Patent grant