日志处理方法、装置、计算机设备及存储介质转让专利
申请号 : CN201910816720.8
文献号 : CN110502494B
文献日 : 2022-03-18
发明人 : 欧二强 , 邓鑫鑫 , 沈仁奎
申请人 : 北京思维造物信息科技股份有限公司
摘要 :
权利要求 :
1.一种日志处理方法,其特征在于,包括:分别获取至少一个调用链的链路日志数据;其中,所述调用链的链路日志数据通过对全量采集方式收集到的日志数据进行统计整合形成;
根据所述链路日志数据对各所述调用链关联的服务节点进行状态分析;
如果所述服务节点在工作过程中存在异常状态,则对所述服务节点在工作过程中产生的调用链涉及的链路日志进行存储;
如果各所述服务节点在工作过程中均处于稳定状态,则从各所述服务节点在工作过程中产生的全部调用链中选择部分调用链涉及的链路日志进行存储;
其中,所述如果各所述服务节点在工作过程中均处于稳定状态,则从各所述服务节点在工作过程中产生的全部调用链中选择部分调用链涉及的链路日志进行存储,包括:如果在预设间隔时间内各所述服务节点在工作过程中产生的全部调用链的链路日志数据中均不存在服务节点错误的信息,且计算得到的各所述调用链的消耗时间的变化值均小于设定阈值,则确定各所述服务节点在工作过程中均处于稳定状态,并按照各所述调用链的产生时刻,对各所述调用链涉及的链路日志进行周期性存储。
2.根据权利要求1所述的方法,其特征在于,所述如果所述服务节点在工作过程中存在异常状态,则对所述服务节点在工作过程中产生的调用链涉及的链路日志进行存储,包括:如果所述服务节点在工作过程中产生的调用链的链路日志数据中记录有服务节点错误的信息,则确定所述服务节点在工作过程中存在异常状态,并对所述调用链涉及的链路日志进行存储;
如果所述服务节点在工作过程中产生的调用链的链路日志数据中不存在服务节点错误的信息,且根据所述链路日志数据,计算得到的所述调用链的消耗时间的变化值大于等于设定阈值,则确定所述服务节点在工作过程中存在异常状态,并对所述调用链涉及的链路日志进行存储。
3.根据权利要求1所述的方法,其特征在于,所述按照各所述调用链的产生时刻,对各所述调用链涉及的链路日志进行周期性存储,包括:根据各所述调用链的链路日志数据,获取各所述调用链的产生时刻;
如果所述调用链的产生时刻与周期存储时刻的时间差大于等于所述预设间隔时间,则存储所述调用链涉及的链路日志,并根据当前系统时间更新周期存储时刻。
4.根据权利要求1所述的方法,其特征在于,所述分别获取至少一个调用链的链路日志数据,包括:
从消息队列中读取日志数据;
根据多条所述日志数据中的链路标识信息,分别对各所述日志数据进行统计整合,形成至少一个调用链的链路日志数据。
5.根据权利要求1所述的方法,其特征在于,所述日志数据通过日志收集器采用全量收集方式收集日志数据,并根据链路标识信息对收集到的日志数据进行统计整合,得到属于一个调用链的日志数据,写入同一消息队列中。
6.根据权利要求2所述的方法,其特征在于,所述调用链的消耗时间的变化值基于如下公式进行计算:
其中,tv为所述调用链的消耗时间的变化值;tcost为所述调用链的产生时刻与结束时刻之间的时间;rv为预设值。
7.一种日志处理装置,其特征在于,包括:链路日志数据获取模块,用于分别获取至少一个调用链的链路日志数据;其中,所述调用链的链路日志数据通过对全量采集方式收集到的日志数据进行统计整合形成;
服务节点状态分析模块,用于根据所述链路日志数据对各所述调用链关联的服务节点进行状态分析;
异常存储模块,用于如果所述服务节点在工作过程中存在异常状态,则对所述服务节点在工作过程中产生的调用链涉及的链路日志进行存储;
稳定存储模块,用于如果各所述服务节点在工作过程中均处于稳定状态,则从各所述服务节点在工作过程中产生的全部调用链中选择部分调用链涉及的链路日志进行存储;
其中,所述稳定存储模块,包括:服务节点稳定判断单元,用于如果在预设间隔时间内各所述服务节点在工作过程中产生的全部调用链的链路日志数据中均不存在服务节点错误的信息,且计算得到的各所述调用链的消耗时间的变化值均小于设定阈值,则确定各所述服务节点在工作过程中均处于稳定状态,并按照各所述调用链的产生时刻,对各所述调用链涉及的链路日志进行周期性存储。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1‑6中任一所述的日志处理方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1‑6中任一所述的日志处理方法。
说明书 :
日志处理方法、装置、计算机设备及存储介质
技术领域
背景技术
程语言来开发,并部署在了几千台服务器,横跨多个不同的数据中心,从而使整个分布式系
统变得日趋复杂。
的追踪(trace)数据、指标数据和日志数据,完成全链路跟踪。
到的全部日志。其中,第1种方法需要占用大量的存储资源,而且后续的分析需要耗费大量
的计算资源。而后3种方法采集到的链路不完整的,甚至部分节点的日志没有被采集,更严
重的是错误的请求没有被采集存储,导致失真率高。
发明内容
施例中任一所述的日志处理方法。
生的调用链进行存储,实现将每个出错的日志数据进行全链存储,保证出错数据均记录下
来,以便后续统计和分析,从而减少日志数据的失真率,并将处于稳定状态的服务节点在工
作过程中产生的调用链进行周期性存储,减少日志数据存储的量,解决了现有技术中全量
采集并全量存储的存储资源消耗大,以及部分采集并存储的日志数据的失真率高的问题,
可以减少日志的存储量同时降低采集数据的失真率。
附图说明
具体实施方式
于描述,附图中仅示出了与本发明相关的部分而非全部结构。
装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中,例如,服务器等。如图
1所示,本实施例的方法具体包括:
一个完整的调用链。
录自身的操作数据,而一个调用链通常包括多个不同服务节点之间的调用关系,从而,需要
对日志文件进行解析,从中查询统计出属于一个调用链的日志数据,并进行整合,形成一个
调用链的链路日志数据,最终统计出多个调用链的链路日志数据。
算机设备上可以仅部署有一个服务节点,或者部署有多个服务节点。
定运行,则在稳定状态下产生的全部调用链无需全部存储,可以选择部分调用链进行存储,
节省存储空间,避免存储资源浪费。示例性的,对服务节点在稳定状态下产生的调用链进行
周期性存储。
时刻得到产生的调用链存在异常数据,需要进行存储,而后一时刻得到产生的调用链不存
在异常数据,可以不需要进行存储。从而,需要判断服务节点是否在产生调用链的工作过程
中出现异常状态。综上,需要在产生该调用链的工作过程中存在调用关系的各服务节点进
行状态分析,以判断产生的该调用链是否进行存储。
据进行分析可以得到包括下述至少一项:调用链关联的服务节点信息、调用链的产生时刻
到结束时刻之间的时间长度(即消耗时间)、调用链关联的各服务节点的完成状态和整体完
成状态等信息,基于前述信息确定各服务节点的状态。
故障位置、错误原因分析和容量评估等。
链的链路日志数据中记录有服务节点错误的信息,则确定所述服务节点在工作过程中存在
异常状态,并对所述调用链进行存储;如果所述服务节点在工作过程中产生的调用链的链
路日志数据中不存在服务节点错误的信息,且根据所述链路日志数据,计算得到的所述调
用链的消耗时间的变化值大于等于设定阈值,则确定所述服务节点在工作过程中存在异常
状态,并对所述调用链进行存储。
客户端反馈请求结果之间的时间。
间的变化值大于等于设定阈值表示调用链的消耗时间变化较大,也即在产生调用链对应的
工作过程中,服务节点接收到的请求的数量突变(变大或变小),也即流量突变程度较高,此
时,服务节点在处理请求的过程中发生出错的概率较高。通常,调用链的消耗时间的变化值
用于表征调用链的波动情况。
行存储,保证全部出错的请求均属于调用链的存储覆盖范围内,以便后续故障定位、分析和
统计。
数据的失真率。
户端反馈请求结果的时刻。
长,通常,时间变长的程度是有限的,连续多个调用链的消耗时间逐步增加,如果当前调用
链的消耗时间相较于前一调用链的消耗时间没有变化,但还根据初始的预设值进行判断
时,得到的结果为当前调用链对应的请求量的波动较大,当前调用链被存储,但实际上,当
前调用链对应的请求量的波动情况相较于前一调用链是平稳的,此时,当前调用链无需存
储,如果将平稳的无需存储的调用链进行存储,则增加了存储资源的消耗。从而,可以根据
前一波动的调用链的消耗时间更新预设值,实现减少波动判断错误导致增加存储资源的消
耗,以减少存储资源的浪费。
链的消耗时间的变化值判断。
链的存储覆盖范围内,保证调用链的存储覆盖范围覆盖有全部出错的请求,从而,降低日志
数据的采集失真率。
状态的各服务节点在工作过程中产生的全部调用链,并从全部调用链中选择部分调用链进
行存储,例如随机选择设定数目的调用链,设定数据小于全部调用链的数目。可选的,选择
小于全部调用链数目的设定数目的调用链进行存储。选择方式可以是随机选择,还可以是
按照设定周期采样选择,此外,还可以根据设定规则进行选择,对此,本发明实施例不做具
体限制。
状态,则从多个调用链的选择部分调用链进行存储,通常部分调用链的少于该连续时间内
产生的调用链的数量。
隔时间内各所述服务节点在工作过程中产生的全部调用链的链路日志数据中均不存在服
务节点错误的信息,且计算得到的各所述调用链的消耗时间的变化值均小于所述设定阈
值,则确定各所述服务节点在工作过程中均处于稳定状态,并按照各所述调用链的产生时
刻,对各所述调用链进行周期性存储。
时,出错的概率较低。该工作过程产生的调用链可以无需存储。
储部分稳定调用链,在减少调用链的存储量的同时,采集稳定的调用链,避免出现稳定的调
用链均不存储的情况,从而降低日志数据采集的失真率。
产生时刻与周期存储时刻的时间差大于等于所述预设间隔时间,则存储所述调用链,并根
据当前系统时间更新周期存储时刻。
设间隔时间就会存储一次调用链,从而实现周期性存储。其中,预设间隔时间可以根据需要
进行设定,示例性的,间隔时间为1秒,此外还可以是其他时间,对此,本发明实施例不作具
体限制。
刻即为调用链的结束时刻。
时间的变化值大于等于设定阈值,则确定所述服务节点在工作过程中存在异常状态,并对
所述调用链进行存储之后,还包括:根据当前系统时间更新周期存储时刻。
的调用链不同于存在服务节点错误的链路日志数据隶属的调用链,消耗时间的变化值大于
等于设定阈值的调用链,也即波动变化大的调用链,是疑似包含出现故障的服务节点,在波
动变化大的调用链产生前后产生的调用链可能是处于稳定状态的服务节点产生的,不会导
致其他调用链出错,由此,可以更新周期存储时刻,以减少稳定状态的服务节点产生的调用
链的存储。
生的调用链进行存储,实现将每个出错的日志数据进行全链存储,保证出错数据均记录下
来,以便后续统计和分析,从而减少日志数据的失真率,并将处于稳定状态的服务节点在工
作过程中产生的调用链进行周期性存储,减少日志数据存储的量,解决了现有技术中全量
采集并全量存储的存储资源消耗大,以及部分采集并存储的日志数据的失真率高的问题,
可以减少日志的存储量同时降低采集数据的失真率。
列中读取日志数据;根据多条所述日志数据中的链路标识信息,分别对各所述日志数据进
行统计整合,形成至少一个调用链的链路日志数据。如图2a所示,本实施例的方法具体包
括:
(Extraction‑Transformation‑Loading,ETL)的设备。
量采集方式收集到的日志数据进行统计整合形成。
信息。在本实施例中,接收到客户端发送的请求,为该请求成一个全局链路标识信息,即
Trace ID,通过链路标识信息可以串联起整个调用链,一个链路标识信息代表一次请求。除
了TraceID外,还需要Span ID和Parent ID用于记录调用父子关系。每个服务实例会记录下
Span ID和Parent ID,通过Span ID和Parent ID可以串联形成一次完整调用链的父子关
系。整个调用过程中每个请求都要附加透传链路标识信息,由此,要查看某次完整的调用链
则只要根据链路标识信息查出所有调用记录即可。
同一消息队列中。
据。并进一步基于日志数据的链路标识信息,将相同链路标识信息的日志数据整合到一起,
统计形成不同组的日志数据,一个组即为一个调用链。分别将属于一个调用链的全部日志
数据分别写入一个消息队列中,方便后续读取和处理。具体可以通过哈希(Hash)取模算法,
将具有相同Trace ID的日志数据聚合到同一个主题中,即实现将属于一个调用链的全部日
志数据分别写入一个消息队列中。
数据进行存储,等待读取,方便后续以调用链的维度进行日志数据的处理,缩短调用链的存
储判断的时间,提高调用链的存储判断的效率。其中,写入方式可以是逐一写入,也可以是
同时写入。
费者监听到,并被消费者读取。如果在接收到属于一个调用链的多个日志数据之后,在预设
时间段内,未再次接收到属于该调用链的任一日志数据,此时,确定该调用链的全部日志数
据均读取完成。
据按照链路标识信息,分发到不同消息队列中,合理分配消息队列,实现动态扩容,而且,按
照链路标识信息将属于一个调用链的日志数据聚合到一起存储到同一消息队列中,避免了
一个调用链的日志数据分散到不同消息队列中,导致后续日志数据无法快速聚合到一起,
也难以确定调用链的日志数据是否从消息队列中全部读完,从而降低日志数据的聚合复杂
度,减少日志数据的工作量,提高日志数据的聚合效率,以及提高整体调用链的日志数据的
存储效率。
成状态和整体完成状态等离线数据处理结果。此外,还可以对链路日志数据进行实时统计
分析,得到整个服务集群的每秒查询率(Query Per Second,QPS)(如平均每秒查询率),整
个服务集群中各服务节点的QPS,以及服务节点的响应时间等实时数据处理结果。实时数据
处理结果可以随着日志数据一起进行存储,具体的,可以根据时间单位(如秒或分钟等)进
行存储,而且存储所占据的资源小。
链的链路日志数据中记录有服务节点错误的信息,则确定所述服务节点在工作过程中存在
异常状态,并对所述调用链进行存储;如果所述服务节点在工作过程中产生的调用链的链
路日志数据中不存在服务节点错误的信息,且根据所述链路日志数据,计算得到的所述调
用链的消耗时间的变化值大于等于设定阈值,则确定所述服务节点在工作过程中存在异常
状态,并对所述调用链进行存储。
很大,但是为了排除错误,故障定位,调用链的全部链路日志数据是不可或缺的,需要全部
存储。
隔时间内各所述服务节点在工作过程中产生的全部调用链的链路日志数据中均不存在服
务节点错误的信息,且计算得到的各所述调用链的消耗时间的变化值均小于所述设定阈
值,则确定各所述服务节点在工作过程中均处于稳定状态,并按照各所述调用链的产生时
刻,对各所述调用链进行周期性存储。
产生时刻与周期存储时刻的时间差大于等于所述预设间隔时间,则存储所述调用链,并根
据当前系统时间更新周期存储时刻。
204中读取需要的日志数据,并统计整合成至少一个调用链的链路日志数据,进行存储判
断。配置中心206用于根据用户的输入配置在调用链的链路日志数据的存储判断过程中的
配置参数,例如,预设值、设定阈值和预设间隔时间等。本机设备205在调用链的链路日志数
据的存储判断过程中对链路日志数据进行处理,得到离线数据处理结果207,以判断服务节
点在工作过程中产生的调用链的链路日志数据中是否存在服务节点错误的信息,以及调用
链的消耗时间的变化值与设定阈值的大小比较。此外本机设备205还可以进行实时数据处
理得到QPS和/或响应时间等实时数据处理结果208。并将离线数据处理结果、实时数据处理
结果和整个调用链的全部链路日志数据共同存储,以便进一步继续后续处理209,如进行查
询、分析和监控等。
例不作具体限制。
进行小批量的传输,数据持续流动,计算得到的记过可以立刻发送到其他系统进行实时展
示和后续处理。
行整体存储,可以保证宏观数据完整,同时,可以简单高效的综合全量采集、随机采集和定
时采集的优点。
周期存储时刻,在与更新后的周期存储时刻之间的时间差为预设间隔时间时,将本次调用
链存储,从而实现间隔预设间隔时间存储一次调用链。
储:6000*5%+60=360条调用链的日志数据,仅为全量采集6%,实现在降低失真率的同时
减少了存储量。
信息,统计整合形成多个调用链的链路日志数据,可以准确获取调用链的全部日志数据,保
证日志数据在调用链维度下进行分析和存储,提高日志数据处理的效率。
一般可集成计算机设备中,如服务器等。
成;
生的调用链进行存储,实现将每个出错的日志数据进行全链存储,保证出错数据均记录下
来,以便后续统计和分析,从而减少日志数据的失真率,并将处于稳定状态的服务节点在工
作过程中产生的调用链进行周期性存储,减少日志数据存储的量,解决了现有技术中全量
采集并全量存储的存储资源消耗大,以及部分采集并存储的日志数据的失真率高的问题,
可以减少日志的存储量同时降低采集数据的失真率。
所述服务节点在工作过程中存在异常状态,并对所述调用链进行存储;如果所述服务节点
在工作过程中产生的调用链的链路日志数据中不存在服务节点错误的信息,且根据所述链
路日志数据,计算得到的所述调用链的消耗时间的变化值大于等于设定阈值,则确定所述
服务节点在工作过程中存在异常状态,并对所述调用链进行存储。
服务节点错误的信息,且计算得到的各所述调用链的消耗时间的变化值均小于所述设定阈
值,则确定各所述服务节点在工作过程中均处于稳定状态,并按照各所述调用链的产生时
刻,对各所述调用链进行周期性存储。
时刻与周期存储时刻的时间差大于等于所述预设间隔时间,则存储所述调用链,并根据当
前系统时间更新周期存储时刻。
数据进行统计整合,形成至少一个调用链的链路日志数据。
入同一消息队列中。
示例,不应对本发明实施例的功能和使用范围带来任何限制。
(包括系统存储器28和处理单元16)的总线18。计算机设备12可以是挂接在总线上的设备。
例来说,这些体系结构包括但不限于工业标准体系结构(Industry Standard
Architecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强
型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域
总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不
可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以
提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性
光盘(例如紧凑磁盘只读存储器(Compact Disc Read‑Only Memory,CD‑ROM),数字视盘
(Digital Video Disc‑Read Only Memory,DVD‑ROM)或者其它光介质)读写的光盘驱动器。
在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储
器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程
序模块被配置以执行本发明各实施例的功能。
程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程
序模块42通常执行本发明所描述的实施例中的功能和/或方法。
得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解
调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口22进行。并且,计算
机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area
Network,LAN),广域网(Wide Area Network,WAN)通信。如图所示,网络适配器20通过总线
18与计算机设备12的其它模块通信。应当明白,尽管图4中未示出,可以结合计算机设备12
使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁
盘驱动阵列、(Redundant Arrays of Inexpensive Disks,RAID)系统、磁带驱动器以及数
据备份存储系统等。
成;根据所述链路日志数据对各所述调用链关联的服务节点进行状态分析;如果所述服务
节点在工作过程中存在异常状态,则对所述服务节点在工作过程中产生的调用链进行存
储;如果各所述服务节点在工作过程中均处于稳定状态,则从各所述服务节点在工作过程
中产生的全部调用链中选择部分调用链进行存储。
存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或
器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具
有一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、只读存储器(Read Only
Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,
EPROM)、闪存、光纤、便携式CD‑ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被
指令执行系统、装置或者器件使用或者与其结合使用。
不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是
计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者
传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
合。
还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以
完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部
分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在
涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括LAN或WAN——连
接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网
连接)。
重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行
了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还
可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。