调用链监控,常见的工程实现了解汇总

448 阅读3分钟

调用链监控,常见的工程实现了解汇总

作用

微服务盛行,以及现在的云原生部署,应用数量急速上涨.会导致服务于服务之间的调用变的错综复杂.导致问题排查需要查看很多服务的日志,且很复杂,需要一套系统能够清晰的理清系统之间的调用关系,快速的定位监控问题.

  1. 生成项目网络拓扑图
  2. 快速定位问题
  3. 优化系统

原理

建议了解一下文章

在调用链监控系统中,有几个核心概念需要了解:

  • Trace:

    Trace是指一次请求调用的链路过程,trace id 是指这次请求调用的ID。在一次请求中,会在网络的最开始生成一个全局唯一的用于标识此次请求的trace id,这个trace id在这次请求调用过程中无论经过多少个节点都会保持不变,并且在随着每一层的调用不停的传递。最终,可以通过trace id将这一次用户请求在系统中的路径全部串起来。

  • Span:

    Span是指一个模块的调用过程,一般用span id来标识。在一次请求的过程中会调用不同的节点/模块/服务,每一次调用都会生成一个新的span id来记录。这样,就可以通过span id来定位当前请求在整个系统调用链中所处的位置,以及它的上下游节点分别是什么。spanid和parentSpanid组合起来就可以表示成一个树形的调用关系。

  • Annotation:

    是指附属信息,可以用于附属在每一个Span上自定义的数据。

具体参考下图:

微服务架构之「 调用链监控 」

从图中可见,一次请求只有一个唯一的trace id=12345,在请求过程中的任何环节都不会改变。在这个请求的调用链中,SpanA调用了SpanB,然后SpanB又调用了SpanC和SpanD,每一次Span调用都会生成一个自己的span id,并且还会记录自己的上级span id是谁。通过这些id,整个链路基本上就都能标识出来了。

实现

所有的调用链监控系统都由

  1. 数据埋点采集.
  2. 数据存储处理.
  3. 数据分析展示
  4. 几大部分组成.

目前个大主流互联网公司中,ali有非常出现的鹰眼系统,点评也有一套很出名的调用链监控系统CAT。

目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking

SkyWalking ,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等

下面是网上摘录的几款调用链选型对比(无skywalking).

在这里插入图片描述

基本原理

类别ZipkinPinpointSkyWalking CAT
实现方式拦截请求,发送(HTTP,mq)数据至zipkin服务java探针,字节码增强java探针,字节码增强

接入

类别ZipkinPinpointSkyWalkingCAT
接入方式」基于linkerd或者sleuth方式,引入配置即可javaagent字节码」javaagent字节码代码侵入
agent到collector的协议http,MQthriftgRPChttp/tcp
OpenTracing××

分析

类别ZipkinPinpointSkyWalkingCAT
颗粒度接口级方法级方法级代码级
全局调用统计×
traceid查询××
报警×
JVM监控××

页面UI展示

类别ZipkinPinpointSkyWalkingCAT
健壮度****************

数据存储

类别ZipkinPinpointSkyWalkingCAT
数据存储ES,mysql,Cassandra,内存HbaseES,H2mysql,hdfs

参考文档

调用链监控,架构师必须点亮的技能

微服务架构之「 调用链监控 」

微服务调用链的原理和选型

SkyWalking 为超大规模而生