具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
监控图表是可视化的了解业务数据的一种常用方式。其中,该监控图表可以是监控大盘上显示的图表,该监控大盘可以使用界面的方式展示监控功能,大盘上可以显示诸如趋势图、列表、饼图等图表,这些图表即可以称为监控图表。通过监控图表,用户可以快速方便的了解业务数据的统计特点,例如,通过趋势图可以了解业务数据在一段时间的分布趋势。
本说明书至少一个实施例提供了一种监控图表的生成方法,该方法可以由云端的监控图表生成设备执行,用户可以将自己的业务数据上传到云端的监控图表生成设备,该设备就可以根据上传数据自动生成监控图表供用户查看。
请参见图1所示,某企业自己的业务处理设备11在进行业务处理,并且可以在业务处理的过程中将相关处理信息同步上传至云端的监控图表生成设备12,例如,可以将单位时间内(如,2秒钟)的业务交易量上传到云端,或者将单位时间内的业务交易失败量上传到云端。而云端可以执行本说明书至少一个实施例提供的监控图表的生成方法,并将生成的图表可以反馈至企业的客户端13进行查看。如下描述该监控图表的生成过程:
数据上传
客户端向云端上传数据时,可以按照一套预定义的数据格式进行上传,这样可以方便后续对上传数据的解析和处理,加快处理速度。
如下示例一种上传数据的数据格式:
如上所述的上传数据格式中,可以包括两部分内容,一部分是数据data,另一部分是数据的监控维度dimension。
其中,data中的业务发生时间、数据名称、数据类型和数据值,可以称为“数据属性”。实际实施中,上传的数据中包括何种数据属性,可以根据将要生成的数据图表确定,生成不同的数据图表需要的数据属性也可能是不同的。
例如,趋势图的生成,需要数据名称、数据值和业务发生时间三种数据属性。又例如,数据名称、数据值、业务发生时间和数据类型这四种数据属性可以支持趋势图和分布图的生成。
其中,上述的数据名称1、数据名称n可以是监控指标的名称,例如,监控指标可以是交易量、成功率等指标。示例性的,数据名称1可以是“交易量”。对于一个监控指标,采集到的该监控指标的业务发生时间、数据值等数据属性的整体,可以称为这个监控指标的实时数据。例如,如下示例一个上传的交易量的实时数据:
"biz_time":"2017-12-08 10:40:32",
"name":"交易量",
"type":"Long",
"value":"5"
再者,对于数据的监控维度dimension,可以包括如下两种维度:
一种类型的维度是视角维度:一笔数据可以由不同的视角来分析,比如,一笔交易可以从商户视角、支付方式视角、城市视角等监控,这些不同的视角之间往往是并列关系。可以将“商户”、“支付方式”这些视角称为视角维度。
举例来说,参见上述的预定义的数据格式中,维度名称1和维度名称2,这两个维度之间是并列关系,可以将其称为视角维度。所述的维度名称1和维度名称2是两个并列的视角维度。即监控维度中可以包括至少一个视角维度,且所述至少一个视角维度之间是并列关系。
另一种类型的维度是:视角维度下包括的多层下钻的子维度。例如,在上述预定义的数据格式中,维度名称2之下还可以包括:维度名称2.1,该维度名称2.1之下还可以包括维度名称2.1.1。这就是一种多层下钻的维度关系,其中的维度名称2.1和维度名称2.1.1可以称为“子维度”,而维度名称2还可以称为“视角维度”。
举例来说,如果有多个层次关系时,可以从顶层开始一层一层查看下一层的监控数据大盘。比如:商户下有门店,门店下有终端。则可以通过商户大盘的门店列表,点击门店下钻到单门店维度的监控大盘,点击单门店大盘中的终端跳转至单终端大盘。这就是由视角维度逐层下钻到下层的各个子维度。
需要说明的是,上面的预定义的数据格式仅是示例,在实际实施中可以变动。例如,如上提到的,数据属性可以根据要生成的监控图表的需要确定。又例如,数据的监控维度dimension中可以都是没有子维度的单维度,比如,维度名称1,还可以包括多个具有子维度的视角维度,比如,还可以包括维度名称3,该维度名称3下还可以包括多个子维度。
如下以上述的数据格式为例,示例一个客户端上传的数据信息,该数据信息包括:生成监控图表所需的监控指标的实时数据、以及所述数据对应的监控维度。例如,其中包括交易量的实时数据,还包括机房/服务器的监控维度。
如上所示,交易量、失败量和错误码这三个监控指标的实时数据,可以对应到“XXXX餐饮有限公司→上海→大拇指广场店→POS000111终端”终端,同时也对应到“上海01机房→CC-2F-71-29-8D-F3服务器”,相当于知道了这些实时数据对应的前端POS和后台机房的服务器。
客户端可以通过接口向云端上传数据时,可以都按照上述的数据格式上传。通过预定义客户端上传的数据格式,上传的数据有了统一的语义格式,便于后续的快速解析和处理。
数据存储
云端的监控图表生成设备可以接收客户端上传的数据信息,由于客户端的业务在不断的处理,客户端可以是一直不断的向云端上传数据,云端接收到的数据量较大。如果将接收到的实时数据都直接存储在数据库中,那么数据量太大将造成资源的较大浪费。另外,云端还要将接收到的客户端上传数据进行数据格式转化,以转化成云端设备能够识别和解析的数据格式。
考虑到以上两个方面,本说明书至少一个实施例中,可以将客户端上传的数据信息存储在结构化的日志文件中,日志文件可以存储在日志服务器。并且,可以采用两个日志文件,分别称为第一日志文件和第二日志文件。
其中,第一日志文件可以用于存储监控指标的实时数据和对应的至少一个视角维度。例如,可以存储交易量的实时数据,以及交易量对应的维度名称1和维度名称2。该第一日志文件相当于存储的是并列的视角维度。
第二日志文件可以用于存储监控指标的实时数据以及对应的视角维度及子维度。该第二日志文件主要用于存储实时数据对应的多层下钻的维度关系。
如下示例两种日志文件的存储格式:
第一日志文件的存储格式:
第二日志文件的存储格式:
如下以交易量为例,示例交易量在上述的第一日志文件和第二日志文件中的存储格式:
第一日志文件中存储的交易量:
如上,在第一日志文件中,存储了监控指标“交易量”的实时数据{2017-12-0810:40:32,交易量,5,Long,},还存储了该交易量对应的两个并列的视角维度,一个视角维度的维度名称是“商户”,维度值是“XXXX餐饮有限公司”;另一个视角维度的维度名称是“机房”,维度值是“上海01机房”。
第二日志文件中存储的交易量:
如上,在第二日志文件中,存储了监控指标“交易量”的实时数据{2017-12-0810:40:32,交易量,5,Long,},还存储了该交易量对应的两个视角维度以及每个视角维度下的多层子维度。其中一个视角维度的维度名称是“商户”,维度值是“XXXX餐饮有限公司”,该商户视角维度下的相邻下一层的子维度是“城市”,子维度的维度值是“上海”,接着,“城市”的相邻下一层的子维度是“门店”,该门店子维度的维度值是“大拇指广场店”。其他视角维度和子维度同理,不再详述。
在将监控指标的实时数据和监控维度存储在结构化日志文件中之外,还可以存储监控指标的数据关系,将该数据关系存储在数据库中。
其中,上述监控指标的“数据关系”可以包括一个二维矩阵,对于某一个监控指标来说,可以从N个视角维度来监控,对于其中的每个视角维度,又可以包括M层下钻的子维度。这些监控指标以及对应的视角维度和子维度就可以称为数据关系。举个例子来说明,监控指标“交易量”可以从商户、机房等N个视角维度监控,对于具体的一个视角维度,也可以有M层下钻的子维度,比如,商户→门店→终端、机房→服务器、省→市→区。从而构成了N*M二维关系矩阵。
如下示例在数据库中存储的交易量的数据关系,在下面的表1中,交易量对应的各视角维度和子维度,可以构成一个2*4的二维矩阵(如突出显示部分)。
表1数据关系
如上述,云端在接收到客户端上传的数据信息后,存储了第一日志文件和第二日志文件,还在数据库中存储了数据关系。
数据解析
在本部分的数据解析中,主要是解析上述生成的第一日志文件和第二日志文件,分别生成不同监控维度的数据统计值。
举例如下:在实际的监控业务中,用户存在多种可能的监控查询需求。例如,以交易量为例,用户可以查询交易量在商户维度的统计数据,该统计数据可以是在用户指定的时间段内的交易量累加值。又例如,用户还可能去查询在子维度终端的交易量统计数据。本部分数据解析时,可以对于各种可能的监控维度(包括视角维度或者子维度),获取对应该监控维度的数据统计值。该数据统计值可以是预设单位时间内的统计值,例如,实时数据的采集上传可以是1秒,而所述的预设单位时间可以是1分钟。
在数据解析时,可以根据所述第一日志文件和第二日志文件的日志格式,分割日志文件中的各个字段,所述各个字段包括各个视角维度和子维度。比如,以上面的第一日志文件中存储的交易量为例,示例性的,以逗号分隔,“2017-12-08 10:40:32”属于“时间”字段,“交易量”属于数据名称字段,“5”属于数据值字段,等,由此解析得到日志文件中的各个字段。
接着,可以分别统计各个视角维度或者子维度下的监控指标的实时数据,得到数据统计值。仍以上述第一日志文件中存储的交易量为例,日志文件中存储的是监控指标的实时数据,比如,10:40:32的交易量,可以是每秒钟上报的交易量。而这里的数据统计值可以是以分钟来统计,比如,统计10:40这一分钟内的交易量累加。各个视角维度或者子维度可以都统计,比如,统计交易量在商户维度的每分钟交易量,或者,统计交易量在机房维度的每分钟交易量。
可以将数据统计值存储在数据库中。如下表2示例一种存储方式:
表2数据统计值
通过在数据库中存储数据统计值,一方面,相比于将所有的实时数据都存储进数据库,本例子将数据统计值存储在数据库,可以节约数据库的存储资源;另一方面,在后续的图表生成时,相比于查询实时数据的日志生成图表,由于数据统计值相当于已经进行了预先统计,可以提高图表生成速度。
图表生成
本部分,根据上述在数据库中存储的数据关系和数据统计值,可以生成可视化的监控图表。
例如,请参见图2所示的监控大盘,显示了“列表”形式的监控图表。通过查询数据库中的数据关系,可以知道监控指标“交易量”和“失败量”都具有“商户”和“机房”这两个并列的视角维度。那么可以在这两个维度下,分别统计用户指定的时间段内的交易量或失败量的TOP 10,实现多维监控。这里的统计可以查询数据库中的数据统计值,例如,可以将所述用户指定的时间段内每分钟的交易量累加,得到的统计值可以称为指标统计值。如图2中的XXXX餐饮有限公司的交易量20即为指标统计值。
此外,还可以不分维度,统计用户指定的时间段内的交易量或失败量总额,例如,图2中的交易量25。当用户想要查看“商户”和“机房”之外的其他视角维度下的指标统计值时,可以通过查询来查询更多的视角维度,云端也可以根据用户查询的视角维度,获取该视角维度下的指标统计值进行展示。
其中,列表中的数据以数据块的方式统一展示,点击具体的数据块,可以弹出趋势图。趋势图的生成可以根据数据名称、数据值、业务发生时间和数据类型这些数据属性得到。例如,当数据类型是数值类型时,根据图表中的点击数据可以自动转化成趋势图。数值类型可以包括:Long、Double,百分比数据等。当数据类型是枚举类型时,比如错误码分布,可以自动转化成饼图或分布图。图3示例了点击图2中的PV时得到的趋势图。
此外,图2所示的监控图表中,Top表格还可以支持通过下钻来查看下一级的监控图表。比如,假设用户点击了商户TOP10中的XXXX餐饮有限公司,那么云端可以执行图4的处理流程,以显示下一级的监控图表:
在步骤400中,接收到对于其中一个监控维度的展示触发。
例如,用户点击了商户TOP10中的XXXX餐饮有限公司,那么云端接收到对于视角维度“商户”中的“XXXX餐饮有限公司”的展示触发。
在步骤402中,查询数据库中的数据关系,得到监控维度下层的子维度。
例如,可以查询数据库中的数据关系,获知视角维度“商户”包括多个子维度,相邻的下一层子维度是“城市”。
在步骤404中,根据所述子维度,获取所述子维度对应的数据统计值,并得到指标统计值。
本步骤中,以步骤402中查询得到的子维度“城市”为统计维度,获取子维度“城市”对应的数据统计值,例如可以是“城市”维度下的每一分钟的交易量数据,如,“上海”每一分钟的交易量数据,“北京”每一分钟的交易量数据。并且,可以按照用户指定的时间段(比如,0点到21点),将所述的每一分钟的交易量数据累加,得到指标统计值。
在步骤406中,显示所述子维度的指标统计值对应的监控图表。
例如,可以通过列表的形式,显示“城市”维度下的各个城市的指标统计值。
通过上述监控图表的生成过程,可以得到如下图5所示的一种监控图表的生成方法,该方法可以由云端的监控图表生成设备执行,如下简单描述,详细过程可以参见上面的实施例。如图5所示,该方法可以包括:
在步骤500中,接收客户端以预定义的数据格式上传的数据信息,所述数据信息包括:生成监控图表所需的监控指标的实时数据、以及所述数据对应的监控维度。
在步骤502中,将所述监控指标的实时数据和监控维度存储在结构化日志文件中,并将根据所述数据信息得到的监控指标的数据关系存储在数据库中。
在步骤504中,解析所述结构化日志文件,分别生成不同监控维度的数据统计值,在所述数据库中存储所述数据统计值。
在步骤506中,根据所述数据关系和数据统计值,生成可视化的监控图表。
本例子的方法,一方面,为客户端上传数据信息提供了统一的数据格式,方便后续快速处理;另一方面,通过将实时数据和维度存储在日志文件中,并在数据库中存储数据关系和对日志统计的数据统计值,使得图表生成时的查询和统计处理速度更快,从而提高了监控实现的效率,并且对数据库资源的占用减少;此外,客户只要通过客户端向云端上传数据即可自动生成监控图表,监控的实现成本降低。
图6是本说明书至少一个实施例提供的监控图表的生成装置的结构示意图,如图6所示,该装置可以包括:信息接收模块61、信息存储模块62、数据统计模块63和图表生成模块64。
信息接收模块61,用于接收客户端以预定义的数据格式上传的数据信息,所述数据信息包括:生成监控图表所需的监控指标的实时数据、以及所述实时数据对应的监控维度;
信息存储模块62,用于将所述监控指标的实时数据和监控维度存储在结构化日志文件中,并将根据数据信息得到的监控指标的数据关系存储在数据库中;
数据统计模块63,用于解析所述结构化日志文件,分别生成不同监控维度的数据统计值,在所述数据库中存储所述数据统计值;
图表生成模块64,用于根据所述数据关系和数据统计值,生成可视化的监控图表。
在一个例子中,所述监控维度包括:至少一个视角维度,所述至少一个视角维度之间是并列关系;其中,至少一个视角维度下包括多层下钻的子维度。
在一个例子中,信息存储模块62,具体用于:将所述监控指标的实时数据和对应的至少一个视角维度,存储在第一日志文件中;将所述监控指标的实时数据以及对应的视角维度及子维度,存储在第二日志文件中;所述数据关系包括:所述监控指标以及对应的视角维度和子维度。
在一个例子中,图表生成模块64,具体用于:接收到对于其中一个监控维度的展示触发;查询数据库中的数据关系,得到所述监控维度下层的子维度;根据所述子维度,获取所述子维度对应的数据统计值,并得到指标统计值;显示所述子维度的指标统计值对应的监控图表。
本说明书至少一个实施例还提供了一种监控图表的生成设备,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令;所述处理器用于在执行所述计算机指令时实现以下步骤:
接收客户端以预定义的数据格式上传的数据信息,所述数据信息包括:生成监控图表所需的监控指标的实时数据、以及所述实时数据对应的监控维度;
将所述监控指标的实时数据和监控维度存储在结构化日志文件中,并将根据所述数据信息得到的监控指标的数据关系存储在数据库中;
解析所述结构化日志文件,分别生成不同监控维度的数据统计值,在所述数据库中存储所述数据统计值;
根据所述数据关系和数据统计值,生成可视化的监控图表。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。