logo好方法网

全链路监控方法、系统及CAT客户端


技术摘要:
本申请提供一种全链路监控方法、系统及CAT客户端,该方法包括:获取检测到的访问请求的访问链和访问链ID,并根据所述访问链ID对所述访问请求进行标记;通过所述访问链中的各微服务的所述第一CAT客户端和第二CAT客户端创建每个微服务的CAT监控事务,以监控标记后的所述  全部
背景技术:
目前,可以通过开源的CAT(Central  Application  Tracking,中央应用程序监控) 客户端监控微服务架构中的微服务应用,然而,由于CAT客户端是通过try-catch机制来捕 获程序执行的异常以及其他异常状况的,使得传统的CAT客户端只能在目标代码执行之前 执行CAT的Transaction  begin事件,在目标代码执行完成之后,执行Transaction  complete事件,并且Transaction  begin和Transaction  complete需要在同一个代码块中, 也就是说CAT客户端不支持微服务架构中网关应用和非阻塞跨线程的监控,调用链会出现 断裂,无法实现微服务架构的全链路监控。
技术实现要素:
本申请的主要目的在于提供一种全链路监控方法、系统及CAT客户端,旨在实现微 服务架构的全链路监控,便于追溯异常问题。 第一方面,本申请提供一种全链路监控方法,所述方法应用于全链路监控系统,所 述全链路监控系统包括中央应用程序监控CAT客户端和监控服务端,所述CAT客户端包括第 一CAT客户端和第二CAT客户端,所述第一CAT客户端和第二CAT客户端的监控逻辑不同,所 述第一CAT客户端部署于微服务网关,所述第二CAT客户端部署于微服务应用,所述方法包 括: 获取检测到的访问请求的访问链和访问链ID,并根据所述访问链ID对所述访问请 求进行标记; 通过所述访问链中的各微服务的所述第一CAT客户端和第二CAT客户端创建每个 微服务的CAT监控事务,以监控标记后的所述访问请求; 当检测到所述CAT监控事务结束时,将所述第一CAT客户端和第二CAT客户端监控 得到的监控数据发送至所述监控服务端进行存储。 可选地,所述通过所述访问链中的各微服务的所述第一CAT客户端和第二CAT客户 端创建每个微服务的CAT监控事务,以监控标记后的所述访问请求,包括: 通过所述访问链中的微服务网关对应的所述第一CAT客户端,创建所述微服务网 关的CAT监控事务,以监控标记后的所述访问请求;以及 通过所述访问链中的微服务应用对应的所述第二CAT客户端,创建所述微服务应 用的CAT监控事务,以监控标记后的所述访问请求。 可选地,所述第一CAT客户端包括第一前置过滤器、第二前置过滤器、第一后置过 滤器和第二后置过滤器,所述第一前置过滤器与所述第一后置过滤器关联,所述第二前置 过滤器与所述第二后置过滤器关联;所述通过所述访问链中的微服务网关对应的所述第一 5 CN 111586092 A 说 明 书 2/8 页 CAT客户端,创建所述微服务网关的CAT监控事务,以监控标记后的所述访问请求,包括: 通过所述第一前置过滤器创建主CAT监控事务,并基于预设异常捕获机制确定标 记后的所述访问请求的第一监控信息; 将所述第一监控信息和主CAT监控事务写入标记后的所述访问请求,以更新所述 访问请求,并将更新后的所述访问请求转发至所述访问链中的下一个微服务; 通过所述第二前置过滤器获取已更新的所述访问请求的第二监控信息,并从已更 新的所述访问请求中提取所述主CAT监控事务; 创建所述主CAT监控事务的子CAT监控事务,并通过子CAT监控事务记录所述第二 监控信息; 通过所述第二后置过滤器获取已更新的所述访问请求的响应报文,并从所述响应 报文中提取第三监控信息; 通过所述子CAT监控事务记录所述第三监控信息,并结束所述子CAT监控事务; 通过所述第一后置过滤器获取已更新的所述访问请求的响应报文,并将所述微服 务网关的属性信息写入所述响应报文,以更新所述响应报文; 将更新后的所述响应报文发送至所述访问链中的上一个微服务,并结束所述主 CAT监控事务,以完成对标记后的所述访问请求的监控。 可选地,所述监控数据包括第一监控信息、第二监控信息和第三监控信息,所述第 一监控信息包括URL地址、上一个微服务的IP地址、名称和当前时间戳,所述第二监控信息 包括转发路径、请求类型和当前时间戳,所述第三监控信息包括下一个微服务的IP地址和 名称。 可选地,所述通过所述访问链中的微服务应用对应的所述第二CAT客户端,创建所 述微服务应用的CAT监控事务,以监控标记后的所述访问请求,包括: 通过所述访问链中的微服务应用对应的所述第二CAT客户端,创建所述微服务应 用的CAT监控事务; 根据预设异常捕获机制,确定标记后的所述访问请求的监控信息,并通过所述CAT 监控事务记录所述监控信息,以完成对标记后的所述访问请求的监控。 第二方面,本申请还提供一种全链路监控系统,所述全链路监控系统包括中央应 用程序监控CAT客户端和监控服务端,其中: 所述CAT客户端包括第一CAT客户端和第二CAT客户端,所述第一CAT客户端和第二 CAT客户端的监控逻辑不同; 所述第一CAT客户端部署于微服务网关,用于监控所述微服务网关,并将监控得到 的数据发送至所述监控服务端; 所述第二CAT客户端部署于微服务应用,用于监控所述微服务应用,并将监控得到 的监控数据发送至所述监控服务端; 所述监控服务端,用于接收并存储所述第一CAT客户端和第二CAT客户端发送的监 控数据。 第三方面,本申请还提供一种CAT客户端,其特征在于,所述CAT客户端包括:第一 前置过滤器、第二前置过滤器、第一后置过滤器和第二后置过滤器,所述第一前置过滤器与 所述第一后置过滤器关联,所述第二前置过滤器与所述第二后置过滤器关联,所述CAT客户 6 CN 111586092 A 说 明 书 3/8 页 端部署于微服务网关,用于监控所述微服务网关,其中: 所述第一前置过滤器,用于拦截访问请求,并创建主CAT监控事务,且根据预设异 常捕获机制确定所述访问请求的第一监控信息;以及还用于将所述第一监控信息和主CAT 监控事务写入所述访问请求,以更新所述访问请求,并将更新后的所述访问请求转发至下 一个微服务; 所述第二前置过滤器,用于拦截所述第一前置过滤器转发的已更新的所述访问请 求,并从已更新的所述访问请求中提取所述主CAT监控事务;以及还用于创建所述主CAT监 控事务的子CAT监控事务,并通过子CAT监控事务记录所述第二监控信息; 所述第二后置过滤器,用于拦截所述下一个微服务基于所述访问请求返回的的响 应报文,并从所述响应报文中提取第三监控信息;以及还用于通过所述子CAT监控事务记录 所述第三监控信息,并结束所述子CAT监控事务; 所述第一后置过滤器,用于拦截所述下一个微服务基于所述访问请求返回的响应 报文,并将所述微服务网关的属性信息写入所述响应报文,以更新所述响应报文;以及还用 于将更新后的所述响应报文发送至上一个微服务,并结束所述主CAT监控事务。 本申请提供一种全链路监控方法、系统及CAT客户端,本申请通过在微服务架构的 微服务网关部署第一CAT客户端,并在微服务应用部署第二CAT客户端,然后当检测到访问 请求时,基于访问链ID对访问请求进行标记,并通过访问链中的各微服务的第一CAT客户端 和第二CAT客户端创建每个微服务的CAT监控事务,以监控标记后的访问请求,最后当检测 到CAT监控事务结束时,将第一CAT客户端和第二CAT客户端监控得到的监控数据发送至监 控服务端进行存储,由于第一CAT客户端可以监控微服务网关,第二CAT客户端可以监控微 服务应用,同时基于访问链ID对访问请求进行标记,使得整个调用链的监控过程都携带有 访问链ID,因此可以实现微服务架构的全链路监控,便于追溯异常问题。 附图说明 为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的 附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普 通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 图1为本申请实施例提供的一种全链路监控方法的流程示意图; 图2为本申请实施例提供的一种全链路监控系统的示意性框图; 图3为本申请实施例中CAT客户端的的示意性框图; 图4为本申请实施例提供的一种CAT客户端的示意性框图。 本申请目的的实现、功能特点及优点将结合实施例,参阅附图做进一步说明。
分享到:
收藏