一种微服务监控方法及系统
技术领域
本发明涉及计算机
技术领域
,尤其涉及一种微服务监控方法及系统。背景技术
随着微服务的快速发展,常通过现有的高性能HTTP和反向代理服务器nginx的方式调用整个微服务的监控数据,以实时了解服务的状态。由于服务越来越多,且服务的迭代速度也再加快,因此各个服务之间的调用链路就会增加。为了提高服务之间的数据调用效率,需要将HTTP的调用监控方式转换成远程过程调用协议rpc的调用监控方式。
在转换的过程中,rpc调用的监控数据容易出现缺失,从而导致无法准确对整个微服务进行监控,且无法及时发现服务的故障状态。
发明内容
有鉴于此,本发明实施例提供一种微服务监控方法及系统,以解决现有技术中无法准确对整个微服务进行监控,且无法及时发现服务的故障状态的问题。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例第一方面示出了一种微服务监控方法,所述方法包括:
采集微服务的应用内进程对应的相关指标数据;
基于rpc调用的拦截器,对所述相关指标数据中与所述rpc指标数据一致的相关数据进行统计,确定请求计数数据和请求耗时数据;
对与所述相关指标数据一致的异常监控数据进行统计,确定异常数据,所述异常数据用于指示每一进程每分钟出现异常的次数;
将所述请求计数数据、所述请求耗时数据、所述异常数据和所述相关指标数据进行显示。
可选的,在采集微服务的应用内进程对应的相关指标数据之后,还包括:
利用预先配置的标签数据对所述采集到的相关指标数据进行收集和清洗,并将收集和清洗后的相关指标数据进行存储。
可选的,还包括:
在获取到用户输入进程状态查询指令时,基于所述进程状态查询指令查找与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据;
判断与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据是否符合告警规则;
若符合,则输出告警信息。
可选的,所述判断与所述进程对应的请求计数数据、请求耗时数据和异常数据是否符合告警规则,还包括:
基于所述请求耗时数据,确定请求耗时大于第一阈值的第一次数;
判断所述第一次数与所述请求计数数据的比值是否大于第一数值,所述异常数据中的异常次数是否大于第二数值;
若所述第一次数与所述请求计数数据的比值大于第一数值,且所述异常数据中的异常次数大于第二数值,则输出告警信息。
可选的,所述将所述微服务中每一进程的请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示,包括:
将所述请求计数数据、请求耗时数据和异常次数进行封装得到封装模块,并进行显示。
本发明实施例第二方面示出了一种微服务监控系统,所述系统包括:
采集模块,用于采集微服务的应用内进程对应的相关指标数据;
第一统计模块,用于基于rpc调用的拦截器,对所述相关指标数据中与所述rpc指标数据一致的相关数据进行统计,确定请求计数数据和请求耗时数据;
第二统计模块,用于对与所述相关指标数据一致的异常监控数据进行统计,确定异常数据,所述异常数据用于指示每一进程每分钟出现异常的次数;
显示模块,用于将所述请求计数数据、所述请求耗时数据、所述异常数据和所述相关指标数据进行显示。
可选的,还包括:
处理模块,用于在采集微服务的应用内进程对应的相关指标数据之后,利用预先配置的标签数据对所述采集到的相关指标数据进行收集和清洗,并将收集和清洗后的相关指标数据进行存储。
可选的,还包括:
查询模块,用于在获取到用户输入进程状态查询指令时,基于所述进程状态查询指令查找与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据;
判断模块,用于判断与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据是否符合告警规则,若符合,则执行告警模块;
所述告警模块,用于输出告警信息。
本发明实施例第三方面示出了一种计算机可读存储介质,所述计算机可读存储介质上存储有服务监控处理的程序,所述服务监控处理的程序可被一个或者多个处理器执行,以实现如本发明实施例第一方面示出的微服务监控方法。
本发明实施例第四方面示出了一种计算机程序产品,包括计算机指令,当其在计算机上运行时,使得计算机可以执行如本发明实施例第一方面示出的微服务监控方法。
基于上述本发明实施例提供的一种微服务监控方法及系统,该方法包括:采集微服务的应用内进程对应的相关指标数据;基于rpc调用的拦截器,对相关指标数据中与rpc指标数据一致的相关数据进行统计,确定请求计数数据和请求耗时数据;对与相关指标数据一致的异常监控数据进行统计,确定异常数据,异常数据用于指示每一进程每分钟出现异常的次数;将请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示。在本发明实施例中,利用rpc调用的拦截器,对相关指标数据中与rpc指标数据一致的调试数据进行统计,确定请求计数数据和请求耗时数据;再对与相关指标数据一致的异常监控数据进行统计,确定异常数据。以将请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示。通过上述方式对微服务进行监控能够准确对整个微服务进行监控,且能够及时发现服务的故障状态。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例示出的一种微服务监控方法的流程示意图;
图2为本发明实施例示出的另一种微服务监控方法的流程示意图;
图3为本发明实施例示出的又一种微服务监控方法的流程示意图;
图4为本发明实施例示出的一种微服务监控系统的结构示意图;
图5为本发明实施例示出的另一种微服务监控系统的结构示意图;
图6为本发明实施例示出的又一种微服务监控系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本发明实施例中,利用rpc调用的拦截器,对相关指标数据中与rpc指标数据一致的调试数据进行统计,确定请求计数数据和请求耗时数据;再对与相关指标数据一致的异常监控数据进行统计,确定异常数据。以将请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示。通过上述方式对微服务进行监控能够准确对整个微服务进行监控,且能够及时发现服务的故障状态。
参见图1,为本发明实施例示出的一种微服务监控方法的流程示意图,该方法包括:
步骤S101:采集微服务的应用内进程对应的相关指标数据。
可选的,微服务中被监控组件,即应用的进程为服务监控系统prometheus提供对应的HTTP接口,以将微服务中被监控组件,即应用的进程接入服务监控系统prometheus。
在具体实现步骤S101的过程中,服务监控系统prometheus通过HTTP协议周期性的抓取微服务中被监控组件,即应用的进程的运行状态。
步骤S102:基于rpc调用的拦截器,对所述相关指标数据中与所述rpc指标数据一致的相关数据进行统计,确定请求计数数据和请求耗时数据。
在步骤S102中,请求计数数据包括微服务中每一进程的请求次数,请求耗时数据是指每次请求的耗时。
可选的,在进行请求计数数据和请求耗时数据统计之前,基于当前应用HTTP的监控点,定义rpc的分布式服务dubbo的监控点,也就是说先定义rpc指数据,rpc指标数据主要包括service服务、接口信息path,方法methon,调用类型type(供应者provider/消费者consumer),状态status(成功success/错误error等)等相关参数,以将异常指标写入prometheus的监控指标中rpc监控指标写入prometheus的监控指标中。
在具体实现步骤S102的过程中,基于rpc调用的拦截器,利用prometheus的总结数据类型summary对所述相关指标数据中service服务、接口信息path,方法methon,调用类型type(供应者provider/消费者consumer),状态status(成功success/错误error等)等相关参数对应的调用信息进行统计,得到请求计数数据和请求耗时数据。
步骤S103:对与所述相关指标数据一致的异常监控数据进行统计,确定异常数据。
在步骤S103中,异常数据用于指示每一进程每分钟出现异常的次数。
可选的,在进行异常数据统计之前,需要基于当前应用的依赖调用,需要定义异常指标,以确定异常数据。异常指标包括类、方法、行、或level等级等信息。
比如,基于开源日志组件logback的日志组件,确定日志信息中的对象代表事件的状态event信息;并对event信息进行解析,得到能够影响数据异常的类、方法、行、或level等级等信息,即异常指标;以将异常指标写入prometheus的监控指标中。
在具体实现步骤S103的过程中,利用prometheus的计数数据类型Counter对所述相关指标数据中能够应用数据异常的类、方法、行、或level等级等信息进行统计,得到异常数据。
步骤S104:将所述请求计数数据、所述请求耗时数据、所述异常数据和所述相关指标数据进行显示。
在具体实现步骤S104的过程中,将所述请求计数数据,请求耗时数据,异常数据和相关指标数据封装成jar包和模块go module,即封装模块,可视化工具golang通过引入模块go module的方式快速接入请求计数数据,请求耗时数据,异常数据和相关指标数据,并通过暴露执行器actuator/prometheus的接口,将所述请求计数数据,请求耗时数据,异常数据和相关指标数据中的应用的gc、线程等指标信息通过http协议进行实时展示。
在本发明实施例中,利用rpc调用的拦截器,对相关指标数据中与rpc指标数据一致的调试数据进行统计,确定请求计数数据和请求耗时数据;再对与相关指标数据一致的异常监控数据进行统计,确定异常数据。以将请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示。通过上述方式对微服务进行监控能够准确对整个微服务进行监控。
基于上述本发明实施例示出的微服务监控方法,结合图1,参见图2,为本发明实施例示出的另一种微服务监控方法的流程示意图,该方法包括:
步骤S201:采集微服务的应用内进程对应的相关指标数据。
步骤S202:基于rpc调用的拦截器,对所述相关指标数据中与所述rpc指标数据一致的相关数据进行统计,确定请求计数数据和请求耗时数据。
在步骤S202中,请求计数数据包括微服务中每一进程的请求次数,请求耗时数据是指每次请求的耗时。
步骤S203:对与所述相关指标数据一致的异常监控数据进行统计,确定异常数据。
在步骤S203中,异常数据用于指示每一进程每分钟出现异常的次数。
需要说明的是,上述步骤S201至步骤S203的具体实现过程与上述实施例步骤S101至步骤S103的具体实现过程相同,可相互参见,本实施例不加以叙述。
步骤S204:利用预先配置的标签数据对所述采集到的相关指标数据进行收集和清洗,并将收集和清洗后的相关指标数据进行存储。
在具体实现步骤S204的过程中,prometheus的管理服务Daemon通过预先配置的标签数据对采集到的相关指标数据进行收集,再对收集后的相关指标数据进行清洗,以过滤掉重复的数据。进而将清洗后的相关指标数据进行存储。
步骤S205:将所述请求计数数据,请求耗时数据,异常数据和相关指标数据进行显示。
需要说明的是,步骤S205的具体实现过程与上述示出的步骤S104示出的内容相同,可相互参见,本实施例不加以叙述。
在本发明实施例中,利用rpc调用的拦截器,对相关指标数据中与rpc指标数据一致的调试数据进行统计,确定请求计数数据和请求耗时数据;再对与相关指标数据一致的异常监控数据进行统计,确定异常数据。利用预先配置的标签数据对所述采集到的相关指标数据进行收集和清洗,并将收集和清洗后的相关指标数据进行存储;以将请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示。通过上述方式对微服务进行监控能够准确对整个微服务进行监控。
基于上述本发明实施例示出的微服务监控方法,如图3所示,为本发明实施例示出的另一种微服务监控方法的流程示意图,该方法包括:
步骤S301:在获取到用户输入进程状态查询指令时,基于所述进程状态查询指令查找与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据。
在具体实现步骤S301的过程中,在获取到用户基于告警管理器Alertmanager输入的进程状态查询指令时,查找prometheus中与进程状态查询指令对应的相关指标数据,并确定该相关指标数据对应的请求计数数据、请求耗时数据和异常数据。
步骤S302:判断与所述进程对应的请求计数数据、请求耗时数据和异常数据是否符合告警规则,若符合,则执行步骤S303,若不符合,则不输出告警信息。
需要说明的是,在具体实现步骤S302的过程中,包括以下步骤:
步骤S11:基于所述请求耗时数据,确定请求耗时大于第一阈值的第一次数。
在具体实现步骤S11的过程中,针对一个进程,首先确定该进程对应的请求耗时数据中的每一请求耗时,判断该进程的请求耗时数据中是否存在大于第一阈值的请求耗时,若存在,则计算该进程中大于第一阈值的请求耗时的第一次数。
需要说明的是,第一阈值是根据多次实验进行设置的,该第一阈值可为100ms。
步骤S12:判断所述第一次数与所述请求计数数据的比值是否大于第一数值,所述异常数据中的异常次数是否大于第二数值,若所述第一次数与所述请求计数数据的比值大于第一数值,且所述异常数据中的异常次数大于第二数值,则执行步骤S303,若不符合,则不输出告警信息。
在具体实现步骤S12的过程中,首先,计算所述第一次数与所述请求计数数据的比值,得到第一比值;判断第一比值是否大于第一数值;确定与步骤S11对应进程的异常数据;判断异常数据中的异常次数是否大于第二数值,若第一比值大于第一数值,且所述异常数据中的异常次数大于第二数值,则执行步骤S303,若不符合,则不输出告警信息。
需要说明的是,第一数值和第二数值均是根据多次实验进行设置的,比如:第一数值可为5%,第二数值可为10次/分。
为了更好的理解上述步骤S302示出的内容,下面进行举例说明。
假设进程S,进程S对应的请求耗时数据中包括10个请求耗时,第一阈值为100ms,10个请求耗时分别为101ms、140ms、104ms、83ms、57ms、82ms、65ms、63ms、20ms、42ms。第一数值为5%,第二数值为10个。该进程对应的异常数据中异常次数为15次/分。
首先确定该进程S对应的请求耗时数据中的每一请求耗时,判断该进程的请求耗时数据中存在大于第一阈值的请求耗时101ms、140ms和104ms,则计算该进程中大于第一阈值的请求耗时的第一次数为3。
计算第一次数3与所述请求计数数据10的比值,得到第一比值为30%。
确定第一比值30%大于第一数值5%,且所述异常数据中的异常次数15次/分大于第二数值10次/分,此时通过短信将告警信息通知给到应用负责人。
步骤S303:输出告警信息。
在具体实现步骤S303的过程中,通过短信/其他信息的方式将告警信息通知给到应用负责人。
在本发明实施例中,在获取到用户输入进程状态查询指令时,基于所述进程状态查询指令查找与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据。判断与所述进程对应的请求计数数据、请求耗时数据和异常数据是否符合告警规则,若符合,输出告警信息。通过上述方式对微服务进行监控能够及时发现服务的故障状态。
与上述本发明实施例示出的微服务监控方法相对应,本发明实施例还对应公开了一种微服务监控系统,如图4所示,为本发明实施例对应公开了一种微服务监控系统为的结构示意图,该系统包括:
采集模块401,用于采集微服务的应用内进程对应的相关指标数据。
第一统计模块402,用于基于rpc调用的拦截器,对所述相关指标数据中与所述rpc指标数据一致的相关数据进行统计,确定请求计数数据和请求耗时数据。
第二统计模块403,用于对与所述相关指标数据一致的异常监控数据进行统计,确定异常数据,所述异常数据用于指示每一进程每分钟出现异常的次数。
显示模块404,用于将所述请求计数数据、所述请求耗时数据、所述异常数据和所述相关指标数据进行显示。
可选的,显示模块404,具体用于将所述请求计数数据、请求耗时数据和异常次数进行封装得到封装模块,并进行显示。
需要说明的是,上述本发明实施例公开的微服务监控系统中的各个单元具体的原理和执行过程,与上述本发明实施微服务监控方法相同,可参见上述本发明实施例公开的微服务监控方法中相应的部分,这里不再进行赘述。
在本发明实施例中,利用rpc调用的拦截器,对相关指标数据中与rpc指标数据一致的调试数据进行统计,确定请求计数数据和请求耗时数据;再对与相关指标数据一致的异常监控数据进行统计,确定异常数据。以将请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示。通过上述方式对微服务进行监控能够准确对整个微服务进行监控。
基于上述图4示出的微服务监控装置,结合图4,如图5所示,该微服务监控还进一步设置了处理模块405。
处理模块405,用于在采集微服务的应用内进程对应的相关指标数据之后,利用预先配置的标签数据对所述采集到的相关指标数据进行收集和清洗,并将收集和清洗后的相关指标数据进行存储。
在本发明实施例中,利用rpc调用的拦截器,对相关指标数据中与rpc指标数据一致的调试数据进行统计,确定请求计数数据和请求耗时数据;再对与相关指标数据一致的异常监控数据进行统计,确定异常数据。利用预先配置的标签数据对所述采集到的相关指标数据进行收集和清洗,并将收集和清洗后的相关指标数据进行存储;以将请求计数数据和请求耗时数据,以及异常数据和相关指标数据进行显示。通过上述方式对微服务进行监控能够准确对整个微服务进行监控。
基于上述本发明实施例示出的微服务监控装置,如图6所示,该微服务监控还包括:
查询模块601,用于在获取到用户输入进程状态查询指令时,基于所述进程状态查询指令查找与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据。
判断模块602,用于判断与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据是否符合告警规则,若符合,则执行告警模块408。
告警模块603,用于输出告警信息。
在本发明实施例中,在获取到用户输入进程状态查询指令时,基于所述进程状态查询指令查找与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据。判断与所述进程对应的请求计数数据、请求耗时数据和异常数据是否符合告警规则,若符合,输出告警信息。通过上述方式对微服务进行监控能够及时发现服务的故障状态。
可选的,基于上述本发明实施例示出的微服务监控装置,判断模块407具体用于:基于所述请求耗时数据,确定请求耗时大于第一阈值的第一次数;判断所述第一次数与所述请求计数数据的比值是否大于第一数值,所述异常数据中的异常次数是否大于第二数值;若所述第一次数与所述请求计数数据的比值大于第一数值,且所述异常数据中的异常次数大于第二数值,则输出告警信息。
在本发明实施例中,在获取到用户输入进程状态查询指令时,基于所述进程状态查询指令查找与所述相关指标数据对应的请求计数数据、请求耗时数据和异常数据。基于所述请求耗时数据,确定请求耗时大于第一阈值的第一次数;判断所述第一次数与所述请求计数数据的比值是否大于第一数值,所述异常数据中的异常次数是否大于第二数值;若所述第一次数与所述请求计数数据的比值大于第一数值,且所述异常数据中的异常次数大于第二数值,则输出告警信息。通过上述方式对微服务进行监控能够及时发现服务的故障状态。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有微服务监控处理的程序,微服务监控的程序可被一个或者多个处理器执行,以实现上述的微服务监控方法。
本发明实施例还提供了一种计算机程序产品,包括计算机指令,当其在计算机上运行时,使得计算机可以执行上述微服务监控方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种计算机故障自动预警装置及系统