从 0 开始入门 SkyWalking,搭建 SkyWalking 服务,并接入 Java 项目中实现分布式链路追踪。
Tags
目录:
- 1. 概述
- 2. 搭建 SkyWalking 单机环境
- 3. 搭建 SkyWalking 集群环境
- 4. 告警
- 5. 注意事项
- 6. Spring Boot 使用示例
1. 概述
1.1 概念
SkyWalking 是什么?
FROM Apache SkyWalking
分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
1.2 功能列表
SkyWalking 有哪些功能?
FROM Apache SkyWalking
- 多种监控手段。可以通过语言探针和 service mesh 获得监控是数据。
- 多个语言自动探针。包括 Java,.NET Core 和 Node.JS。
- 轻量高效。无需大数据平台,和大量的服务器资源。
- 模块化。UI、存储、集群管理都有多种机制可选。
- 支持告警。
- 优秀的可视化解决方案。
1.3 整体架构
SkyWalking 整体架构如何?
FROM Apache SkyWalking
整个架构,分成上、下、左、右四部分:
考虑到让描述更简单,我们舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。
- 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
- 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
- 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
- 左部分 SkyWalking UI :负责提供控台,查看链路等等。
1.4 官方文档
在 skywalking/docs at master · apache/skywalking · GitHub 地址下,提供了 SkyWalking 的英文文档。
考虑到大多数胖友的英语水平和艿艿不相伯仲,再加上胖友一开始对 SkyWalking 比较陌生,所以比较推荐先阅读 GitHub - SkyAPM/document-cn-translation-of-skywalking: [已过期,请使用官网AI文档] The CN translation version of Apache SkyWalking document 地址,提供了 SkyWalking 的中文文档。
考虑到胖友使用 SkyWalking 的目的,是实现分布式链路追踪的功能,所以最好去了解下相关的知识。这里推荐阅读两篇文章:
- 《OpenTracing 官方标准 —— 中文版》
- Google 论文 《Dapper,大规模分布式系统的跟踪系统》
2. 搭建 SkyWalking 单机环境
考虑到让胖友更快的入门,我们来搭建一个 SkyWalking 单机环境,步骤如下:
- 第一步,搭建一个 Elasticsearch 服务。
- 第二步,下载 SkyWalking 软件包。
- 第三步,搭建一个 SkyWalking OAP 服务。
- 第四步,启动一个 Spring Boot 应用,并配置 SkyWalking Agent。
- 第五步,搭建一个 SkyWalking UI 服务。
2.1 Elasticsearch 搭建
FROM Elasticsearch:官方分布式搜索和分析引擎 | Elastic
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
参考《Elasticsearch 极简入门》的「1. 单机部署」小节,搭建一个 Elasticsearch 单机服务。
不过要注意,本文使用的是 Elasticsearch 7.5.1 版本。因为 SkyWalking 6.6.0 版本,增加了对 Elasticsearch 7.X 版本的支持。当然,如果胖友使用 Elasticsearch 6.X 版本也是可以的。
2.2 下载 SkyWalking 软件包
对于 SkyWalking 的软件包,有两种方式获取:
- 手动编译
- 官方包
一般情况下,我们建议使用官方包。手动编译,更多是尝鲜或者等着急修复的 BUG 的版本。
2.2.1 官方包
在 Downloads | Apache SkyWalking 下,我们下载操作系统对应的发布版。
这里,我们选择 Binary Distribution for ElasticSearch 7 (Linux) 版本,因为艿艿是 Mac 环境,再加上想使用 Elasticsearch 7.X 版本作为存储。如果胖友想用 Elasticsearch 6.X 版本作为存储,记得下载 Binary Distribution (Linux) 版本。
① 下载:
# 创建目录 $ mkdir -p /Users/yunai/s