System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种面向OpenAPI全链路异常的快速定位方法及系统技术方案_技高网

一种面向OpenAPI全链路异常的快速定位方法及系统技术方案

技术编号:40958427 阅读:2 留言:0更新日期:2024-04-18 20:35
本发明专利技术属于数据处理技术领域,公开了一种面向OpenAPI全链路异常的快速定位方法及系统,包括如下步骤:S01:日志系统主节点接收日志查询请求;S02:若查询的日志存在分区B中,日志已经组装完成,直接返回查询的日志信息;S03:若查询的日志存储在分区A中,继续组装日志信息,组装完成后返回查询的日志信息。本发明专利技术可以主动根据OpenAPI的TraceID进行全链路日志查询,也可以根据日志产生的Error信息主动生成全链路日志,便于主动高效的解决问题。

【技术实现步骤摘要】

本专利技术属于数据处理,具体涉及一种面向openapi全链路异常的快速定位方法及系统。


技术介绍

1、现如今云计算广泛应用于我们的生活中,各大云计算厂商都对外提供openapi服务,为用户提供更加方便的调用方式。openapi不仅面向个体客户,还有许多的企业用户,为了应对海量用户,openapi服务多采用分布式架构,保证了服务的高可用,也足以支撑大量的用户请求。这导致openapi自身的日志分散在多个节点,除此之外,openapi也拥有众多的下游服务,下游服务还会有下游服务,各个服务也多采用分布式部署,这就导致openapi服务一旦出现异常,下游服务调用链长且节点多,定位问题速度较慢,对于分布式链路,日志查询较慢,并且无法检主动测到问题的发生,大多需要发现问题后再进行检索,处理问题的效率较低。


技术实现思路

1、本专利技术的目的在于提供一种面向openapi全链路异常的快速定位方法,用于解决
技术介绍
中提出的技术问题。

2、为了实现上述目的,本专利技术采用了如下技术方案:一种面向openapi全链路异常的快速定位方法,包括如下步骤:

3、s01:日志系统主节点接收日志查询请求;

4、s02:若查询的日志存在分区b中,日志已经组装完成,直接返回查询的日志信息;

5、s03:若查询的日志存储在分区a中,继续组装日志信息,组装完成后返回查询的日志信息;

6、s04:若查询的日志不存在分区b与分区a中,继续查询日志存储,若均查询不到则以查询的traceid作为树根存于分区a,并将traceid写入openapi的消息队列中,从openapi层开始进行日志树的组装;

7、s05:通过openapi层的agent模块监听openapi的消息队列,监听到新消息,则获取到消息队列中的traceid,根据id的前8位数据获转换成机器ip,机器ip与agent当前机器ip匹配,继续获取后13位数据,获取日志产生的时间,根据时间寻找对应的日志文件,再获取出完成的日志,发送到日志系统主节点;

8、s06:日志系统主节点接收到openapi反馈的日志后,将日志替换掉刚刚的树根节点,遍历树根的日志信息,openapi日志若还有下层调用,则继续生成叶子节点trace1,trace2……,tracen,并将trace1,trace2……,tracen写入各自的消息队列。

9、优选的,树的根节点为openapi日志,openapi层产生的日志为顶层日志,openapi层调用的下层服务日志作为子节点,解析下层服务traceid,获取到日志产生的节点ip以及时间,先根据traceid在主节点进行检索,若未查询到相应日志则将traceid写入下层服务的消息队列中,下层服务agent模块监听消息队列,当traceid的ip与当前服务地址相同则按照时间查询出对应的trace,发送给主节点,主节点获取到日志后将此trace作为子节点添加到树结构上,继续遍历树的叶子节点,直到每个叶子节点都不再调用其他服务,日志树组装完成。

10、优选的,还包括通过服务节点监听消息队列,并将日志发送给日志系统主节点。

11、优选的,还包括,在服务节点上安装agent模块,通过agent模块自主监控服务节点的error日志,当发现异常会获取到服务节点的完成trace并发送到日志系统主节点。

12、优选的,日志系统主节点接收到服务节点发送的日志信息后,根据日志traceid,查询分区a中的叶子节点,将日志替换相应的叶子,若新的叶子还是存在调用,继续发送日志查询信息,若在分区a未找到与traceid匹配的叶子,并且服务不是openapi层日志,那么将日志信息放置在分区c中;

13、主节点遍历分区a中所有日志树的叶子节点,当一棵树的叶子节点均不存在下层服务调用,日志树构造完成,将日志树转移到分区b中,

14、优选的,分区b空间不足时以lru最近最少使用算法清理内存,并将清理的日志树落盘。

15、优选的,以lru最近最少使用算法清理内存的具体方法为:

16、初始化分区b缓存,指定缓存的最大容量,其中缓存的最大容量为最多可以存储多少项数据;

17、当有数据被访问时,若该数据已经在缓存中,将其移动到缓存的最前面(表示最近被使用过);

18、若缓存未满,直接将新访问的数据插入到缓存的最前面。

19、若缓存已满,需要淘汰一个数据以腾出空间来存储新的数据,选择缓存中最久未被使用的数据项淘汰,也就是选择缓存中最末尾的数据,因为它们是最近最少使用的;

20、将新访问的数据插入到缓存的最前面,表示它是最近被使用过的。

21、一种面向openapi全链路异常的快速定位系统,包括日志系统主节点和n个服务节点;

22、日志系统主节点包括内存缓存模块和日志处理模块;

23、日志处理模块包括内存日志查询单元、发送查询请求单元、全链路日志拼接单元、接收日志单元。

24、优选的,内存缓存模块包括分区a,分区b和分区c,分区a,分区b和分区c分别用来缓存未完成的日志树、已完成的日志树和下层服务的日志。

25、优选的,n个服务节点内均安装有agent模块,日志系统主节点通过消息队列与agent模块进行沟通,所述agent模块包括日志监听单元、消息队列监听单元、日志上报单元。

26、综上所述,由于采用了上述技术方案,本专利技术的有益效果是:

27、该一种种面向openapi全链路异常的快速定位方法及系统可以主动根据openapi的traceid进行全链路日志查询,也可以根据日志产生的error信息主动生成全链路日志,便于主动高效的解决问题。

本文档来自技高网...

【技术保护点】

1.一种面向OpenAPI全链路异常的快速定位方法,其特征在于,包括如下步骤:

2.如权利要求1所述的一种面向OpenAPI全链路异常的快速定位方法,其特征在于,日志树组装方法为:树的根节点为OpenAPI日志,OpenAPI层产生的日志为顶层日志,OpenAPI层调用的下层服务日志作为子节点,解析下层服务TraceID,获取到日志产生的节点IP以及时间,先根据TraceID在主节点进行检索,若未查询到相应日志则将TraceID写入下层服务的消息队列中,下层服务Agent模块监听消息队列,当TraceID的IP与当前服务地址相同则按照时间查询出对应的Trace,发送给主节点,主节点获取到日志后将此Trace作为子节点添加到树结构上,继续遍历树的叶子节点,直到每个叶子节点都不再调用其他服务,日志树组装完成。

3.如权利要求1所述的一种面向OpenAPI全链路异常的快速定位方法,其特征在于,还包括通过服务节点监听消息队列,并将日志发送给日志系统主节点。

4.如权利要求3所述的一种面向OpenAPI全链路异常的快速定位方法,其特征在于,还包括,在服务节点上安装Agent模块,通过Agent模块自主监控服务节点的Error日志,当发现异常会获取到服务节点的完成Trace并发送到日志系统主节点。

5.如权利要求4所述的一种面向OpenAPI全链路异常的快速定位方法,其特征在于,日志系统主节点接收到服务节点发送的日志信息后,根据日志TraceID,查询分区A中的叶子节点,将日志替换相应的叶子,若新的叶子还是存在调用,继续发送日志查询信息,若在分区A未找到与TraceID匹配的叶子,并且服务不是OpenAPI层日志,则将日志信息放置在分区C中;

6.如权利要求5所述的一种面向OpenAPI全链路异常的快速定位方法,其特征在于,分区B空间不足时以LRU最近最少使用算法清理内存,并将清理的日志树落盘。

7.如权利要求6所述的一种面向OpenAPI全链路异常的快速定位方法,其特征在于,以LRU最近最少使用算法清理内存的具体方法为:

8.一种面向OpenAPI全链路异常的快速定位系统,其用于实现权利要求1-7任一项所述的一种面向OpenAPI全链路异常的快速定位方法,其特征在于,包括日志系统主节点和n个服务节点;

9.如权利要求8所述的一种面向OpenAPI全链路异常的快速定位系统,其特征在于,内存缓存模块包括分区A,分区B和分区C,分区A,分区B和分区C分别用来缓存未完成的日志树、已完成的日志树和下层服务的日志。

10.如权利要求9所述的一种面向OpenAPI全链路异常的快速定位系统,其特征在于,n个服务节点内均安装有Agent模块,日志系统主节点通过消息队列与Agent模块进行沟通,所述Agent模块包括日志监听单元、消息队列监听单元、日志上报单元。

...

【技术特征摘要】

1.一种面向openapi全链路异常的快速定位方法,其特征在于,包括如下步骤:

2.如权利要求1所述的一种面向openapi全链路异常的快速定位方法,其特征在于,日志树组装方法为:树的根节点为openapi日志,openapi层产生的日志为顶层日志,openapi层调用的下层服务日志作为子节点,解析下层服务traceid,获取到日志产生的节点ip以及时间,先根据traceid在主节点进行检索,若未查询到相应日志则将traceid写入下层服务的消息队列中,下层服务agent模块监听消息队列,当traceid的ip与当前服务地址相同则按照时间查询出对应的trace,发送给主节点,主节点获取到日志后将此trace作为子节点添加到树结构上,继续遍历树的叶子节点,直到每个叶子节点都不再调用其他服务,日志树组装完成。

3.如权利要求1所述的一种面向openapi全链路异常的快速定位方法,其特征在于,还包括通过服务节点监听消息队列,并将日志发送给日志系统主节点。

4.如权利要求3所述的一种面向openapi全链路异常的快速定位方法,其特征在于,还包括,在服务节点上安装agent模块,通过agent模块自主监控服务节点的error日志,当发现异常会获取到服务节点的完成trace并发送到日志系统主节点。

5.如权利要求4所述的一种面向openapi全链路异常的快速定位方法,其特征在于,日志系统...

【专利技术属性】
技术研发人员:果红艳张泽宇王庆兆张谋泉韩东贺闫维金
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1