一种实时分布式调试跟踪方法及系统的制作方法

文档序号:10572523阅读:378来源:国知局
一种实时分布式调试跟踪方法及系统的制作方法
【专利摘要】本发明实施例提供一种实时分布式调试跟踪方法及系统,所述方法包括:当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,利用客户端浏览器向所述接口发送请求,该请求附加调试标志,所述请求的标头中包含日志等级调试密文;利用分布式日志收集系统自动收集所述接口、及所述接口调用涉及的多台服务器的接口输出的所有日志消息;汇总收集到的所有日志消息,利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息,根据调试结果信息确定所述接口的故障原因。上述技术方案具有如下有益效果:不影响线上服务用户,实现了单接口在线调试功能,根据调试结果信息确定接口的故障原因。
【专利说明】
一种实时分布式调试跟踪方法及系统
技术领域
[0001]本发明涉及互联网技术领域,尤其涉及一种实时分布式调试跟踪方法及系统。
【背景技术】
[0002]目前线上互联网环境调试基本上都是通过唯一id(标识)+分布式日志索引来实现的。每次请求日志汇集及索引,知名的分布式跟踪系统如Dapper,Blackfire,Eagleeye都是基础与请求时生成唯一标识TRACEID(跟踪标识)及RPCid(Remote Procedure Call id,远程过程调用标识)作为起始id并将其传递到所有子系统,子系统记录日志的时候会将这两个标识id记录在日志内,以此来找出一次请求所有经历的路径日志。
[0003]跟踪系统会将分布在多台服务器的日志进行实时收集并根据id做成检索索引,当拿着RPCid和TRACEID过来时可以根据这个id查询调用路径及产生的日志,以此来分析线上工作情况。
[0004]另外对于性能,可以使用Xhprof插件在PHP(Hypertext Preprocessor,超文本预处理器)运行环境中,但是此插件会有大量的磁盘写操作导致系统缓慢,所以正常情况下,会随机10万分之一几率开启这个功能。如果需要线上实时调试,是需要运气才能拿到当前请求的性能日志。
[0005]当碰到只有在线上可复现的情况下的时候,只能在代码上埋入更多的点来抓取什么原因导致的问题,与此同时带来的就是应用接口的性能下降。为此又不能埋太多点,这也直接导致线上排查问题的不便。

【发明内容】

[0006]本发明实施例提供一种实时分布式调试跟踪方法及系统,以不影响线上服务用户,实现单接口在线调试功能,根据调试结果信息确定接口的故障原因。
[0007]—方面,本发明实施例提供了一种实时分布式调试跟踪方法,所述方法包括:
[0008]当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,利用客户端浏览器向所述接口发送请求,该请求附加调试标志,所述请求的标头中包含日志等级调试密文;
[0009]利用分布式日志收集系统自动收集所述接口、及所述接口调用涉及的多台服务器的接口输出的所有日志消息;
[0010]汇总收集到的所有日志消息,利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息,根据调试结果信息确定所述接口的故障原因。
[0011]另一方面,本发明实施例提供了一种实时分布式调试跟踪系统,所述系统包括:客户端浏览器、多台服务器、分布式日志收集系统,其中:
[0012]所述客户端浏览器,用于当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,向所述接口发送请求,该请求附加调试标志,所述请求的标头中包含日志等级调试密文;
[0013]所述分布式日志收集系统,用于自动收集所述接口、及所述接口调用涉及的多台服务器的接口输出的所有日志消息;汇总收集到的所有日志消息,利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息,根据调试结果信息确定所述接口的故障原因。
[0014]上述技术方案具有如下有益效果:采用分级日志+HeadeH标头)调试方式实现实时在线调试功能,根据调试结果信息确定接口的故障原因。通过在请求中附加调试标志,且该请求的标头中包含日志等级调试密文开启调试模式,从而临时更改日志记录级别实现单接口在线调试功能,对线上服务用户没有任何影响,接口性能也不会下降。
【附图说明】
[0015]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0016]图1为本发明实施例一种实时分布式调试跟踪方法流程图;
[0017]图2为本发明实施例一种实时分布式调试跟踪系统结构示意图;
[0018]图3为本发明实施例分布式日志收集系统结构示意图。
【具体实施方式】
[0019]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0020]如图1所示,为本发明实施例一种实时分布式调试跟踪方法流程图,所述方法包括:
[0021 ] 101、当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,利用客户端浏览器向所述接口发送请求,该请求附加调试标志,所述请求的标头中包含日志等级调试密文;
[0022]102、利用分布式日志收集系统自动收集所述接口、及所述接口调用涉及的多台服务器的接口输出的所有日志消息;
[0023]103、汇总收集到的所有日志消息,利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息,根据调试结果信息确定所述接口的故障原因。
[0024]优选地,当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,将如下日志等级调试密文中的一种或多种设置到向所述接口发送的请求的标头中:临时开启性能监控密文,临时提高或临时降低分级日志级别密文;通过如下参数于所述请求的标头中设置所述日志等级调试密文:此次调试请求的日志等级L0GLEVEL、此次调试请求是否临时开启所有涉及此次请求的接口的性能检测工具XHPR0F、此次调试请求运行超过多长时间记录XHPROF日志XHPROFHME。
[0025]优选地,所述调试结果信息包括:跟踪标识TRACEID、此次调试请求的日志等级LOGLEVEL、此次调试请求是否记录了性能日志XHPROF。
[0026]优选地,所有日志消息包括:业务日志、性能日志、调用链日志;利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息之前,还包括:汇总收集到的所有日志消息后,按照所述接口根据该请求返回的跟踪标识TRACEID进行实时索引,所述TRACEID作为在索引系统中列出所有日志消息的唯一标识。
[0027]优选地,将收集到的所有日志消息按照键值Key-Value方式存储。
[0028]对应于上述方法实施例,如图2所示,为本发明实施例一种实时分布式调试跟踪系统结构示意图,所述系统包括:客户端浏览器21、多台服务器23、分布式日志收集系统22,其中:
[0029]所述客户端浏览器21,用于当检测到分布式系统中线上服务器23某一接口出现故障,需要在线进行排查调试时,向所述接口发送请求,该请求附加调试标志,所述请求的标头中包含日志等级调试密文;
[0030]所述分布式日志收集系统22,用于自动收集所述接口、及所述接口调用涉及的多台服务器23的接口输出的所有日志消息;汇总收集到的所有日志消息,利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息,根据调试结果信息确定所述接口的故障原因。
[0031]优选地,所述客户端浏览器21,具体用于当检测到分布式系统中线上服务器23某一接口出现故障,需要在线进行排查调试时,将如下日志等级调试密文中的一种或多种设置到向所述接口发送的请求的标头中:临时开启性能监控密文,临时提高或临时降低分级日志级别密文;还具体用于通过如下参数于所述请求的标头中设置所述日志等级调试密文:此次调试请求的日志等级LOGLEVEL、此次调试请求是否临时开启所有涉及此次请求的接口的性能检测工具X H P R O F、此次调试请求运行超过多长时间记录X H P R O F日志XHPROFUME。
[0032]优选地,所述日志等级调试密文对应的调试结果信息包括:跟踪标识TRACEID、此次调试请求的日志等级L0GLEVEL、此次调试请求是否记录了性能日志XHPR0F。
[0033]优选地,所有日志消息包括:业务日志、性能日志、调用链日志;
[0034]如图3所示,为本发明实施例分布式日志收集系统结构示意图,所述分布式日志收集系统22包括:实时索引单元221,用于利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息之前,汇总收集到的所有日志消息后,按照所述接口根据该请求返回的跟踪标识TRACEID进行实时索弓丨,所述TRACEID作为在索引系统中列出所有日志消息的唯一标识。
[0035]优选地,所述分布式日志收集系统22还包括:键值存储单元222,用于将收集到的所有日志消息按照键值Key-Value方式存储。
[0036]本发明实施例上述技术方案具有如下有益效果:采用分级日志+Header(标头)调试方式实现实时在线调试功能,根据调试结果信息确定接口的故障原因。通过在请求中附加调试标志,且该请求的标头中包含日志等级调试密文开启调试模式,从而临时更改日志记录级别实现单接口在线调试功能,对线上服务用户没有任何影响,接口性能也不会下降。
[0037]以下通过应用实例对本发明实施例上述技术方案进行详细说明:
[0038]本发明应用实例可以采用分级日志+Http(超文本传输协议)Header(标头)调试方式实现实时在线调试功能。通过在客户端浏览器向接口的发送请求中附加调试标志,所述请求的标头中包含日志等级调试密文,开启调试模式,从而临时更改日志记录级别实现单接口在线调试功能。
[0039]平时使用的时候系统使用SDK(Software Development Kit,软件开发工具包)内的分级日志作为主要日志输出,分级日志是指日志分等级,可以通过配置设置哪个级别的日志可以输出:
[0040]1.Debug:调试模式日志,此日志量会很大,但是对于调试很有用
[0041]2.1nfo:信息级别,平时运行环境输出的提示信息,用来提示用户
[0042]3.Warn:警告系统内部非正常情况使用
[0043]4.Error:错误信息级别,用于输出内部系统错误信息
[0044]5.Fatal:致命错误级别,用于记录致命错误信息。
[0045]如上,平时系统运行环境开启Infο或Warn级别即可,这样就会只输出当前级别以上日志:如设置Infο会输出warn、error、fatal信息。如果设置为Debug则记录全量,如果需要在线调试可以临时开启Debug模式拿到大量的调试信息来分析只有线上才会复现的逻辑错误。
[0046]具体操作:在客户端浏览器安装修改请求Header插件,将SDK内规定的密文放到Header内即可开启调试模式,这样对除了当前客户端浏览器用户外的所有线上的服务并没有影响,只有客户端浏览器接口会记录更多的日志。
[0047]Header内可以传递参数如下:
[0048]LOGLEVEL:此次要记录的日志等级
[0049]XHPROF:此次是否开启每个接口的性能检测工具
[0050]XHPR0FTIME:此次运行超过多少秒记录xhprof日志[0051 ] 设置以上Header后,接口返回信息会附带以下信息
[0052]TRACEID:本次请求的uuid(Universally Unique Identifier,通用唯一识别码)
[0053]LOGLEVEL:本次请求的日志等级
[0054]XHPROF:本次请求是否记录了性能日志
[0055]日志的收集:
[0056]分布式日志收集系统自动收集所述接口、及所述接口调用涉及的多台服务器的接口输出的所有日志消息;汇总收集到的所有日志消息,利用所述接口返回的跟踪标识TRACEID确定所述所有日志消息中所述日志等级调试密文对应的调试结果信息,以判断所述接口的故障原因。在以上过程中会使用内部制作的日志收集及分布式消息中间件Kafka传输所有收集到的日志,收集到的日志通过kaf ka同时传递到以下两个模块:
[0057]1.ElasticSearch搜索引擎数据推送模块:
[0058]此模块主要功能是将收集到的日志内容进行合并然后批量推送到ElasticSearch引擎内进行实时索引,索引是按天进行分块。按TRACEID及RPCid进行聚合。通过搜索通用字段和运行时间供应用方使用,其中可做一些负载均衡的设计。通过此模块配合kinbana(是一个为Logstash和ElasticSearch提供的日志分析的Web接口)系统展示可以对当天的所有请求就行分类筛选和排序查询。
[0059]2.按天可叠加KV(Key-Value,键值)存储系统:通过封装rocksdb存储引擎将每天的日志具体内容按照天进行分库,每个库保存一天内的所有日志。当收到相同TRACEID的时候会对TRACEID内内容进行合并,这样当提供日期和TRACEID的时候此存储能够及时查找到所有相关日志并返回给调查界面。日志保存七天,或者可通过更改配置保存更久,过期的日志会被抛弃。
[0060]日志的使用提供了两个界面对开发用户:第一如上使用Kinbana调用elasticSearch进行实时查看展示。第二提供一个调试页面能够展示当前TRACEID的所有调用关系及每个分支下产生的日志有哪些。日志类型分:分级业务日志,xhprof系统性能日
V 1、1、O
[0061 ]以上所有日志信息的查询都是基于TRACEID进行的。
[0062]与现有技术相比,本发明应用实例技术优点如下:采用分级日志+Header(标头)调试方式实现实时在线调试功能,根据调试结果信息确定接口的故障原因。通过在请求中附加调试标志,且该请求的标头中包含日志等级调试密文开启调试模式,从而临时更改日志记录级别实现单接口在线调试功能。对线上服务用户没有任何影响,接口性能也不会下降;可以通过增加日志级别调整记录信息量;可以实时在线调试,密文如果做得合理,接口很安全;整合了分级日志功能,无需因为分布式而附加埋点其他日志。
[0063]应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
[0064]在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
[0065]为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
[0066]上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
[0067]本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(:^丨6代1^1^6313;[1;^7),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
[0068]本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
[0069]本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
[0070]在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、R0M、EEPR0M、⑶-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、锡射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
[0071]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种实时分布式调试跟踪方法,其特征在于,所述方法包括: 当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,利用客户端浏览器向所述接口发送请求,该请求附加调试标志,所述请求的标头中包含日志等级调试密文; 利用分布式日志收集系统自动收集所述接口、及所述接口调用涉及的多台服务器的接口输出的所有日志消息; 汇总收集到的所有日志消息,利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息,根据调试结果信息确定所述接口的故障原因。2.如权利要求1所述实时分布式调试跟踪方法,其特征在于,当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,将如下日志等级调试密文中的一种或多种设置到向所述接口发送的请求的标头中:临时开启性能监控密文,临时提高或临时降低分级日志级别密文; 通过如下参数于所述请求的标头中设置所述日志等级调试密文:此次调试请求的日志等级LOGLEVEL、此次调试请求是否临时开启所有涉及此次请求的接口的性能检测工具XHPROF、此次调试请求运行超过多长时间记录XHPROF日志XHPR0FHME。3.如权利要求1或2所述实时分布式调试跟踪方法,其特征在于,所述调试结果信息包括:跟踪标识TRACEID、此次调试请求的日志等级L0GLEVEL、此次调试请求是否记录了性能日志 XHPROF。4.如权利要求1所述实时分布式调试跟踪方法,其特征在于,所有日志消息包括:业务日志、性能日志、调用链日志; 利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息之前,还包括: 汇总收集到的所有日志消息后,按照所述接口根据该请求返回的跟踪标识TRACEID进行实时索引,所述TRACEID作为在索引系统中列出所有日志消息的唯一标识。5.如权利要求4所述实时分布式调试跟踪方法,其特征在于,将收集到的所有日志消息按照键值Key-Value方式存储。6.—种实时分布式调试跟踪系统,其特征在于,所述系统包括:客户端浏览器、多台服务器、分布式日志收集系统,其中: 所述客户端浏览器,用于当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,向所述接口发送请求,该请求附加调试标志,所述请求的标头中包含日志等级调试密文; 所述分布式日志收集系统,用于自动收集所述接口、及所述接口调用涉及的多台服务器的接口输出的所有日志消息;汇总收集到的所有日志消息,利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息,根据调试结果信息确定所述接口的故障原因。7.如权利要求6所述实时分布式调试跟踪系统,其特征在于,所述客户端浏览器,具体用于当检测到分布式系统中线上服务器某一接口出现故障,需要在线进行排查调试时,将如下日志等级调试密文中的一种或多种设置到向所述接口发送的请求的标头中:临时开启性能监控密文,临时提高或临时降低分级日志级别密文;还具体用于通过如下参数于所述请求的标头中设置所述日志等级调试密文:此次调试请求的日志等级LOGLEVEL、此次调试请求是否临时开启所有涉及此次请求的接口的性能检测工具XHPROF、此次调试请求运行超过多长时间记录XHPROF日志XHPR0FHME。8.如权利要求6或7所述实时分布式调试跟踪系统,其特征在于,所述日志等级调试密文对应的调试结果信息包括: 跟踪标识TRACEID、此次调试请求的日志等级LOGLEVEL、此次调试请求是否记录了性能日志 XHPROF。9.如权利要求6所述实时分布式调试跟踪系统,其特征在于,所有日志消息包括:业务日志、性能日志、调用链日志;所述分布式日志收集系统包括: 实时索引单元,用于利用所述接口根据该请求返回的跟踪标识TRACEID,确定所有日志消息中所述日志等级调试密文对应的调试结果信息之前,汇总收集到的所有日志消息后,按照所述接口根据该请求返回的跟踪标识TRACEID进行实时索引,所述TRACEID作为在索引系统中列出所有日志消息的唯一标识。10.如权利要求9所述实时分布式调试跟踪系统,其特征在于,所述分布式日志收集系统还包括: 键值存储单元,用于将收集到的所有日志消息按照键值Key-Value方式存储。
【文档编号】H04L29/08GK105933163SQ201610476264
【公开日】2016年9月7日
【申请日】2016年6月24日
【发明人】徐长龙, 王崇, 任文越
【申请人】微梦创科网络科技(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1