微服务业务监控方法及服务器与流程

文档序号:15394522发布日期:2018-09-08 01:52阅读:195来源:国知局
本发明属于微服务
技术领域
,尤其涉及微服务业务监控方法及服务器。
背景技术
:微服务是一种新兴的软件架构,把一个大型复杂的应用程序分解为多个微服务,各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。目前,对微服务的系统、应用级的监控比较成熟,但由于分布式系统下不能够快速发现线上故障,故障定位所需时间较长,导致针对微服务的业务进行监控的比较困难。技术实现要素:有鉴于此,本发明实施例提供了微服务业务监控方法及服务器,以解决现有技术中针对微服务的业务进行监控的比较困难的问题。本发明实施例的第一方面提供了一种微服务业务监控方法,包括:生成多个调用请求信息,每个所述调用请求信息对应多个微服务,并将各个所述调用请求信息发送给对应的微服务;每个所述调用请求信息用于使得对应的微服务生成与所述调用请求信息对应的监控数据标识;获取各个微服务生成的监控数据标识,并根据各个所述监控数据标识获取各个所述微服务的业务日志;根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控。可选的,所述调用请求信息包括与各个所述微服务对应的微服务标识;所述将各个所述调用请求信息发送给对应的微服务包括:根据各个所述调用请求信息中的各个微服务标识,将各个所述调用请求信息发送给对应的微服务。可选的,每个所述微服务的业务日志对应有一个日志标识,所述日志标识与该微服务的监控数据标识对应;所述根据各个所述监控数据标识获取各个所述微服务的业务日志包括:根据与各个所述监控数据标识对应的日志标识,获取与各个所述监控数据标识对应的微服务的业务日志。可选的,所述根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控包括:根据获取到的各个所述微服务的业务日志,确定各个微服务的业务数据的平均耗时和业务成功率;根据预设条件对各个微服务的业务数据的平均耗时和业务成功率进行监控。可选的,所述确定各个微服务的业务数据的业务成功率包括:将获取到的业务日志发送给业务方进行配置,并根据业务方配置的返回码中的key和表示配置成功的value,确定业务数据的业务成功率。本发明实施例的第二方面提供了一种服务器,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:生成多个调用请求信息,每个所述调用请求信息对应多个微服务,并将各个所述调用请求信息发送给对应的微服务;每个所述调用请求信息用于使得对应的微服务生成与所述调用请求信息对应的监控数据标识;获取各个微服务生成的监控数据标识,并根据各个所述监控数据标识获取各个所述微服务的业务日志;根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控。可选的,所述调用请求信息包括与各个所述微服务对应的微服务标识;所述将各个所述调用请求信息发送给对应的微服务包括:根据各个所述调用请求信息中的各个微服务标识,将各个所述调用请求信息发送给对应的微服务。可选的,每个所述微服务的业务日志对应有一个日志标识,所述日志标识与该微服务的监控数据标识对应;所述根据各个所述监控数据标识获取各个所述微服务的业务日志包括:根据与各个所述监控数据标识对应的日志标识,获取与各个所述监控数据标识对应的微服务的业务日志。可选的,所述根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控包括:根据获取到的各个所述微服务的业务日志,确定各个微服务的业务数据的平均耗时和业务成功率;根据预设条件对各个微服务的业务数据的平均耗时和业务成功率进行监控。可选的,所述确定各个微服务的业务数据的业务成功率包括:将获取到的业务日志发送给业务方进行配置,并根据业务方配置的返回码中的key和表示配置成功的value,确定业务数据的业务成功率。本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述任务执行控制方法的步骤。本发明实施例与现有技术相比存在的有益效果是:本发明实施例,生成多个调用请求信息,每个所述调用请求信息对应多个微服务,并将各个所述调用请求信息发送给对应的微服务;获取各个微服务生成的监控数据标识,并根据各个所述监控数据标识获取各个所述微服务的业务日志;根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控,从而能够快速发现线上故障,减少故障定位所需时间,使得对微服务的业务进行监控变得较为容易。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的微服务业务监控方法的流程图;图2是本发明实施例提供的微服务业务监控系统架构;图3是本发明实施例提供的监控数据标识的结构示意图;图4是图1中步骤s103的实现流程图;图5是本发明实施例提供的微服务业务监控程序的运行环境示意图;图6是本发明实施例提供的微服务业务监控程序的程序模块图。具体实施方式以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。实施例一图1示出了本发明实施例一提供的任务执行控制方法的实现流程,详述如下:步骤s101,生成多个调用请求信息,每个所述调用请求信息对应多个微服务,并将各个所述调用请求信息发送给对应的微服务;每个所述调用请求信息用于使得对应的微服务生成与所述调用请求信息对应的监控数据标识。其中,本发明实施例通过设置专用的微服务业务监控系统,对微服务业务进行监控。一个示例中,图2示出了以好车主微服为例的微服务业务监控系统架构。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据;logstash是一个接收、处理和转发日志的工具;elasticsearch是基于lucene的搜索服务器;mysql是关系型数据库管理系统;alertserver为告警服务器;accioserver是平安开发的accio应用程序的服务器。其中,所述调用请求信息包括与各个所述微服务对应的微服务标识;所述将各个所述调用请求信息发送给对应的微服务包括:根据各个所述调用请求信息中的各个微服务标识,将各个所述调用请求信息发送给对应的微服务。具体的,一个调用请求若发起多层微服务调用,则每个微服务提供都产生一个监控数据标识,监控数据标识的结构如图3所示。每个监控数据标识的traceid相同,用于串联起来整个调用请求,此外采用spanld作为一个请求链中各个微服务的唯一标识。针对http和dubbo服务的服务方,可以独立构建自己的status,而sql调用无法从sql服务方构建监控数据标识,只能从调用方获取sql服务的调用情况,因此,childstatus从调用方记录服务调用情况,同时可以记录http和dubbo调用没有触达服务端的情况。本实施例中,traceid为请求链的唯一id,包括时间和内存地址;spanid为请求链上不同的各个服务的唯一id;通过traceid和spanid可以唯一确认一条监控数据标识;traceinfo.project是请求链根服务名称,project是当前服务名称,每个服务提供方构建自己的status;childstatus是当前服务调用的子服务,是数组结构,数组的每个元素记录子服务的调用和返回情况。作为一种可实施方式,可以基于springboot、mybatis、dubbo等拦截器构建监控数据标识,通过threalocal将监控数据标识与当前线程绑定,通过httpheader和dubborpccontext传递请求链id,但并不以此为限。步骤s102,获取各个微服务生成的监控数据标识,并根据各个所述监控数据标识获取各个所述微服务的业务日志。其中,每个所述微服务的业务日志对应有一个日志标识,所述日志标识与该微服务的监控数据标识对应。所述根据各个所述监控数据标识获取各个所述微服务的业务日志包括:根据与各个所述监控数据标识对应的日志标识,获取与各个所述监控数据标识对应的微服务的业务日志。本实施例中,基于log4j2mdc为每条业务日志统一添加请求id,从而使得业务日志与监控数据status相关联,但并不限于此。在其他实施例中,还可以通过其他方式为每条业务日志统一添加请求id,使得业务日志与监控数据status相关联。步骤s103,根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控。参见图4,一个实施例中,步骤s103的实现过程可以为:步骤s201,根据获取到的各个所述微服务的业务日志,确定各个微服务的业务数据的平均耗时和业务成功率。结合图2,本实施例中,从elasticsearch统计最近预设时间段内(例如最近五分钟内)获取的数据并存入db数据库,该数据包括每个微服务每个接口的耗时统计、异常统计、业务返回码分布、业务成功率等。然后,从db数据库按照小时、天、周、月等时间单位,统计各个微服务业务数据,确定各个微服务的业务数据的平均耗时和业务成功率等信息。一个实施例中,所述确定各个微服务的业务数据的业务成功率包括:将获取到的业务日志发送给业务方进行配置,并根据业务方配置的返回码中的key和表示配置成功的value,确定业务数据的业务成功率。可以理解的,由于大部分业务对接口做了异常拦截,会导致返回码多样化,因此如果直接根据接收到的返回码确定各个微服务的业务数据的业务成功率,会导致确定出的各个微服务的业务数据的业务成功率严重偏离真实情况。本实施例中,收集返回的日志信息,但不做任何处理,并提供配置界面供业务方配置,最后根据业务方配置的返回码的key和表示成功的value进行成功率的统计。本实施例的方法,能够使得对业务成功率的统计和数据提取没有耦合,对业务成功率的统计准确可靠,而且还能保留返回码的所有原始数据,以便于查看,另外,提供统一的前端界面进行配置和查询,也便于维护管理。步骤s202,根据预设条件对各个微服务的业务数据的平均耗时和业务成功率进行监控。本步骤中,所述预设条件为预设数值范围,在业务数据的平均耗时和/或业务成功率超出对应的预设数值范围时,生成告警信息,通过短信、微信、电子邮件等方式发送给相应的智能终端,以使得相关人员能够及时获知出现的告警异常。另外,本步骤中还可以对请求总数和错误率进行监控。例如,可以每5分钟设为一个周期,相邻两个周期统计数据超限或大幅波动则会告警,默认阈值如表1所示。表1指标阈值正负波动备注平均耗时>10s>500%(请求总数大于100)过滤低频请求业务成功率<50%>50%(请求总数大于100)过滤低频请求请求总数[avg-2δ,avg+2δ]之外>90%95%置信区间之外错误率>10%>60%(两个周期差值大于1000)另外,还可以将获取到的微服务监控数据标识、业务日志和监控告警信息生成报表,以便于开发人员能够直观快速的了解应用状况,便于对应用程序进行优化改进。上述微服务业务监控方法,生成多个调用请求信息,每个所述调用请求信息对应多个微服务,并将各个所述调用请求信息发送给对应的微服务;获取各个微服务生成的监控数据标识,并根据各个所述监控数据标识获取各个所述微服务的业务日志;根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控,从而能够快速发现线上故障,减少故障定位所需时间,使得对微服务的业务进行监控变得较为容易。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。实施例二对应于上文实施例所述的微服务业务监控方法,图5示出了本发明实施例提供的微服务业务监控程序的运行环境示意图。为了便于说明,仅示出了与本实施例相关的部分。在本实施例中,所述的微服务业务监控程序500安装并运行于服务器50中。该服务器50可包括,但不仅限于,存储器501和处理器502。图5仅示出了具有组件501-502的服务器50,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。所述存储器501在一些实施例中可以是所述服务器50的内部存储单元,例如该服务器50的硬盘或内存。所述存储器501在另一些实施例中也可以是所述服务器50的外部存储设备,例如所述服务器50上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器501还可以既包括所述终端设备50的内部存储单元也包括外部存储设备。所述存储器501用于存储安装于所述服务器50的应用软件及各类数据,例如所述微服务业务监控程序500的程序代码等。所述存储器501还可以用于暂时地存储已经输出或者将要输出的数据。所述处理器502在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行所述存储器501中存储的程序代码或处理数据,例如执行所述微服务业务监控程序500等。该服务器50还可包括显示器,所述显示器在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。请参阅图6,是本发明实施例提供的微服务业务监控程序500的程序模块图。在本实施例中,所述的微服务业务监控程序500可以被分割成一个或多个模块,所述一个或者多个模块被存储于所述存储器501中,并由一个或多个处理器(本实施例为所述处理器502)所执行,以完成本发明。例如,在图6中,所述的微服务业务监控程序500可以被分割成调用信息生成模块601、获取模块602和监控模块603。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述微服务业务监控程序500在所述服务器50中的执行过程。以下描述将具体介绍所述模块601-603的功能。其中,调用信息生成模块601,用于生成多个调用请求信息,每个所述调用请求信息对应多个微服务,并将各个所述调用请求信息发送给对应的微服务;每个所述调用请求信息用于使得对应的微服务生成与所述调用请求信息对应的监控数据标识。获取模块602,用于获取各个微服务生成的监控数据标识,并根据各个所述监控数据标识获取各个所述微服务的业务日志。监控模块603,用于根据获取到的各个所述微服务的业务日志,对各个微服务的业务数据进行监控。作为一种可实施方式,所述调用请求信息包括与各个所述微服务对应的微服务标识;调用信息生成模块601用于:根据各个所述调用请求信息中的各个微服务标识,将各个所述调用请求信息发送给对应的微服务。作为另一种可实施方式,每个所述微服务的业务日志对应有一个日志标识,所述日志标识与该微服务的监控数据标识对应;获取模块602用于:根据与各个所述监控数据标识对应的日志标识,获取与各个所述监控数据标识对应的微服务的业务日志。可选的,监控模块603用于:根据获取到的各个所述微服务的业务日志,确定各个微服务的业务数据的平均耗时和业务成功率;根据预设条件对各个微服务的业务数据的平均耗时和业务成功率进行监控。进一步的,监控模块603用于:将获取到的业务日志发送给业务方进行配置,并根据业务方配置的返回码中的key和表示配置成功的value,确定业务数据的业务成功率。在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1