Skip to content

一、介绍

Apache SkyWalking 是一个 国产开源框架。

  • 2015年由 吴晟 开源,2017年加入Apache孵化器。
  • skyWalking 是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
  • 它是一款优秀的 APM(Application Performance Management)工具,包括了 分布式追踪、性能指标分析、应用和服务依赖分析 等。

二、为什么使用链路追踪

微服务框架落地后,分布式部署架构带来的问题就会迅速凸显出来。

  • 服务之间的相互调用过程中,如果业务出现错误或者异常,如何快速定位问题?
  • 如何跟踪业务调用链路?
  • 如何分析解决业务瓶颈?

三、链路追踪特性

  • 业务调用链路监控与分析
  • 服务性能链路监控与分析
  • 服务告警

四、链路追踪框架对比

目前主要的一些 APM 工具有:

  • Cat 是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
  • Zipkin 是Twitter开源的调用链分析工具, ,目前基于Spring Cloud Sleuth得到了广泛的使用,特点是轻量,使用部署简单。
  • Pinpoint 是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
  • SkyWalking 是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。

4.1 功能对比

功能CATZipkinSkyWalking
调用链可优化
聚合报表非常丰富较丰富
服务依赖图简单简单
埋点方式侵入式侵入式非侵入式,字节码增强
VM监控指标
支持语言Java、net丰富Java、C++、Net、NodeJs、PHP、Go、Python
存储机制MySQL (报表)、 本地文件、HDFS(调用链)内存、ElasticSearch、MySQLH2、ElasticSearch、MySQL、TiDB、Sharding Sphere
社区支持主要在国内国外主流Apache 支持
使用案例美团、携程、陆金所京东、阿里定制后不开源华为、小米、当当、微众银行
APM
开发基础eBay calGoogle DapperGoogle Depper
是否支持 webflux

4.2 性能对比

比较关注探针的性能,毕竟APM定位还是工具,如果启用了链路监控组建后,直接导致吞吐量降低过半,那也是不能接受的。对skywalking、zipkin、pinpoint进行了压测,并与基线(未使用探针)的情况进行了对比。 选用了一个常见的基于Spring的应用程序,他包含Spring Boot, Spring MVC,redis客户端,mysql。 监控这个应用程序,每个trace,探针会抓取5个span(1 Tomcat, 1 SpringMVC, 2 Jedis, 1 Mysql)。这边基本和 skywalkingtest 的测试应用差不多。 模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合起来,一共有12种。下面看下汇总表:

从上表可以看出,在三种链路监控组件中:

  • skywalking的探针对吞吐量的影响最小。
  • zipkin的吞吐量居中。
  • pinpoint的探针对吞吐量的影响较为明显。

在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器进行的压测,对CPU和memory的影响都差不多在10%之内。

详细参考信息: APM 巅峰对决

五、SkyWalking 主要功能特性

  • 多种监控手段,可以通过语言探针和serviceMesh获得监控的数据。
  • 支持多种语言自动探针。
  • 轻量高效,无需大数据平台和大量的服务器资源。
  • 模块化、UI、存储、集群管理都有多种机制可选。
  • 支持告警。
  • 优秀的可视化解决方案。