
这张拓扑图,它是根据时间线、针对一个分布式业务系统的流量访问关系进行动态绘制的,从图中可以清晰、直观地看出各个微服务的上下游调用关系,包括客户端、WEB、APP、中间件消息队列、LB、DB 等等,并且在该业务系统异常时,能够准确地在这张拓扑图中标识具体的异常访问路径,也就是图中红色的线条,同时可以继续下钻,查看该异常访问路径在途径的所有虚拟网元节点侧统计的 Metrics 性能指标。比如图中 DB 集群是由两组容器 POD 组成,同时 DB-2 访问 DB-1 的路径跨越了两层虚拟化。
全栈路径对应右上角图中标识的七处位置,分别为客户端 POD、客户端 Node 节点、客户端宿主机、网关、服务端宿主机、服务端 Node 节点以及服务端 POD,DeepFlow 能够自动计算每一跳位置的 Metrics 性能指标,再通过横向、纵向的关联对比,自动标识异常访问路径的具体故障点,比如能够准确地回答应用访问慢是慢在了客户端容器节点内,网络丢包是发生在服务端宿主机到服务端容器节点之间,等等。
通过这样的全栈链路追踪能力,能够实现故障的快速定界定位,显著降低故障修复时间。
价值2、零侵扰的全链路调用追踪
使用 BPF、eBPF 技术实现零侵扰、无盲点的分布式应用调用追踪,进而实现从应用到基础设施的全链路追踪与保障。以大家所熟知的 Bookinfo Demo 来举例,这个场景包括多语言,如 JAVA、Python、Ruby、NodeJS 等等,以及也包含了 Istio 服务网格,是一个比较典型的分布式业务系统。
右上角的火焰追踪图,是通过 eBPF+BPF 技术关联实现的一个完整的、自动化的分布式应用全链路追踪图,这个和传统的应用调用追踪图比较相似,但是没有做任何的插码,不需要修改业务代码,也无需向 HTTP 头注入 TraceID 或者 SpanID。
同时在这张全链路追踪图中,包含了4个调用、38个 SPAN,以及上述提到的多语言的分布式追踪能力。
一般情况在客户端进程发起一个 GET 的调用,通过插码的方式,仅能够看到客户端调用服务端的时延,中间传输网络是透明的,是看不到的。DeepFlow 通过一系列自研的专利技术,创新性地实现 Flow 生成、Session 关联,能够直观地将客户端调用服务端中间的每一跳时延都刻画出来,比如客户端应用进程到 POD、到 Node、再到服务端 Node、POD、服务端进程等等。
因此,通过这张全覆盖的火焰图能够使各部门在同一个平面上协作起来,实现故障问题的快速定界定位。
另外,在看一下 Service Mesh 的场景,可以清晰地看到业务流量被 Istio envoy sidecar 截持后,中间经过的每一个环节的时延消耗情况,包括 Ingress Envoy 的收、发,以及 Egress Envoy 的收、发。同时,应用服务接收到这个请求后,会发起一次 DNS Lookup,这往往也是应用插码容易忽略掉的一些细节的地方,也是 eBPF 零侵扰的分布式应用全链路追踪的价值所在,看的更全面,排障才能更得心应手。
云杉网络
March 25, 2024
云杉动态, 最新内容