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

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

作用

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

  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).

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

基本原理

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

接入

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

分析

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

页面UI展示

类别 Zipkin Pinpoint SkyWalking CAT
健壮度 ** ***** **** *****

数据存储

类别 Zipkin Pinpoint SkyWalking CAT
数据存储 ES,mysql,Cassandra,内存 Hbase ES,H2 mysql,hdfs

参考文档

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

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

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

SkyWalking 为超大规模而生