一、为什么需要链路追踪?¶
随着云计算和微服务架构的普及,越来越多的企业开始采用分布式架构开发应用程序。
在这种复杂的架构中,应用程序的性能问题变得更加棘手,传统的单机监测工具已经无法满足需求。

二、Skywalking简介¶
SkyWalking是国内开源的基于字节码注入的调用链分析以及应用监控分析工具。
特点:是支持多种插件,UI功能较强,接入端无代码侵入。目前使用厂商最多,版本更 新较快,已成为 Apache 基金会顶级项目。
Skywalking 是一个开源的 APM(Application Performance Management)系统,可 以帮助开发人员和运维人员对分布式应用程序进行监控和调优,帮助用户快速定位应用 程序中的性能瓶颈和故障点。
官方站点:Apache SkyWalking
Skywalking-Kubernetes:Apache SkyWalking Kubernetes Deployment Helm Chart
三、主要功能¶
主要功能包括以下几个方面:
- 服务性能监控:对分布式应用程序进行实时性能监控,包括服务响应时间、吞吐 量、错误率等指标,帮助用户快速发现性能问题和瓶颈。
- 分布式追踪:对分布式应用程序进行追踪,包括跨进程、跨服务、跨线程的追踪, 帮助用户了解应用程序的运行情况和性能瓶颈。
- 应用拓扑图:生成应用程序的拓扑图,展示应用程序中各个服务之间的依赖关系和 调用关系,帮助用户了解应用程序的整体架构和运行情况。
- 告警和通知:根据用户设置的规则进行告警和通知,内置 Webhooks 发送事件通知,支持通过 HTTP、gRPC、Slack 等方式。
- 支持多类型应用:Java、.Net Core、PHP、NodeJS、Golang、LUA、Rust、C++等
- 轻量高效:无需大数据组件,无需大量的硬件资源,且对应用实例的负载消耗极低。
- 模块化:UI、存储、集群管理都有多种机制可选。
- 开源技术:优秀的可视化解决方案,社区较活跃,版本更新较快。

四、APM对比¶
4.1 商业版¶
- 听云
- 博睿宏远
4.2 开源版¶
-
Pinpoint:韩国团队开源的APM产品,运用了字节码增强技术,只需要在启动时添 加启动参数即可实现APM功能,对代码无侵入,目前支持Java和 PHP语言,底层采 用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗较大,因其出现的 时间较长,完成度也很高,文档也较为丰富,应用的公司较多。
-
Zipkin:由Twitter公司开发并开源,基于Java 语言实现,侵入性相对于CAT要低一 点,需要对web.xml等相关配置文件进行修改,对系统有一定的侵入性,Zipkin可 以轻松与Spring Cloud进行集成,也是Spring Cloud推荐的APM系统。
-
Jaeger: 是Uber推出的一款开源分布式追踪系统,主要使用go语言开发,对业务代 码侵入性较少。
-
SkyWalking:Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的 开源项目,2017年12月SkyWalking成为Apache国内首个个人孵化项目,2019年4 月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目,目前SkyWalking 支持Java、.Net、Node.js、go、python等探针,数据存储支持MySQL、 ElasticSearch等,SkyWalking与Pinpoint相同,对业务代码无侵入,不过探针采集 数据粒度相较于Pinpoint来说略粗,但性能表现优秀,目前SkyWalking增长势头强劲,社区活跃,中文文档齐全,没有语言障碍,支持多语言探针,这些都是 SkyWalking的优势所在,还有就是SkyWalking支持很多框架,包括很多国产框架, 例如,Dubbo、gRPC、SOFARPC 等等,同时也有很多开发者正在不断向社区提供更多插件以支持更多组件无缝接入SkyWalking。

五、架构原理¶

SkyWalking在逻辑上分为四个部分:Agent,OAP,Storage和UI。
- Agent:在应用中,收集 Trace、Log、Metrics 等监控数据,使用 RPC、RESTful API、Kafka 等 Transport 传输方式,发送给 OAP 服务。
- OAP:首先 Receiver 接收 Agent 发送的监控数据,然后 Aggregator 进行聚合计算,之后存储到 Storage 外部存储器,最终提供给 GUI 查询数据。
- Storage:存储监控数据,支持 Elasticsearch、MySQL、TiDB、H2 等多种数据库。
- 数据展示:Skywalking 的 Web UI 会将分析结果展示给用户,包括应用程序的性能 指标、调用链信息、拓扑图等,帮助用户快速定位性能问题和瓶颈。
六、部分功能预览¶


