前言:微服务时代的 "破案" 难题

想象一下,你的微服务系统突然变慢了,用户投诉说页面加载要十几秒。你登录到服务器上,看着几十个服务的日志,一脸茫然。你不知道请求到底卡在了哪里,是数据库慢了?还是某个服务调用超时了?还是网络出问题了?

这就像是发生了一起案件,你有几十个嫌疑人,但你没有任何线索。你只能一个个去排查,效率极低,而且很可能找不到真正的凶手。

在微服务架构下,一个请求往往会经过多个服务的调用,形成一条复杂的调用链。一旦出现问题,定位问题就变得非常困难。这时候,我们就需要一个 "侦探" 来帮我们还原整个 "犯罪现场",找出问题的根源。

今天我们就来聊聊微服务领域最著名的 "侦探"——SkyWalking,看看它是如何让你的系统无所遁形的。

一、SkyWalking 是谁?分布式系统的侦探

SkyWalking 是一款开源的应用性能监控 (APM) 系统,专门为微服务、云原生和容器化架构设计。它可以帮助我们:

  • 监控服务的性能指标,如响应时间、吞吐量、错误率

  • 追踪分布式调用链,还原一次请求的完整路径

  • 分析慢查询和异常请求

  • 收集和分析日志

  • 设置告警规则,及时发现问题

SkyWalking 就像是分布式系统的 "福尔摩斯",它能够深入到系统的每一个角落,记录下每一个请求的详细信息,然后通过强大的分析能力,帮我们快速定位问题。

二、SkyWalking 的 "侦探装备":架构解析

SkyWalking 的架构非常清晰,主要由四个部分组成:

1. Agent (探针)

Agent 是 SkyWalking 的 "眼睛",它部署在我们的应用服务中,负责收集应用的性能数据和调用链数据。Agent 采用无侵入的方式,通过 Java Agent 技术,在不修改业务代码的情况下,自动收集数据。

2. OAP (Observability Analysis Platform) - 可观测性分析平台

OAP 是 SkyWalking 的 "大脑",负责接收 Agent 发送的数据,进行分析和存储。OAP 支持多种数据存储方式,如 H2、MySQL、Elasticsearch 等。

3. Storage (存储)

Storage 是 SkyWalking 的 "笔记本",负责存储 OAP 分析后的数据。SkyWalking 支持多种存储介质,其中 Elasticsearch 是最常用的,因为它具有良好的扩展性和查询性能。

4. UI (用户界面)

UI 是 SkyWalking 的 "展示窗口",负责将 OAP 分析后的数据以可视化的方式展示给用户。UI 提供了丰富的图表和仪表盘,让我们可以直观地看到系统的运行状态。

三、快速上手:安装并启动 SkyWalking

说了这么多,我们来动手安装一个 SkyWalking,感受一下它的强大功能。

步骤 1:下载 SkyWalking

首先,我们从 SkyWalking 的官方网站下载最新版本的 SkyWalking: https://skywalking.apache.org/downloads/

步骤 2:启动 SkyWalking OAP 和 UI

解压下载的压缩包,进入 bin 目录,执行以下命令启动 SkyWalking:


这个脚本会同时启动 OAP 和 UI 服务。OAP 默认监听 11800 端口 (用于接收 Agent 数据) 和 12800 端口 (用于 UI 通信),UI 默认监听 8080 端口。

步骤 3:访问 SkyWalking UI

打开浏览器,访问http://localhost:8080,就可以看到 SkyWalking 的 UI 界面了。

四、链路追踪:还原一次请求的 "犯罪现场"

链路追踪是 SkyWalking 最核心的功能之一,它可以还原一次请求的完整调用路径,让我们清楚地看到请求经过了哪些服务,每个服务的响应时间是多少,有没有出现异常。

步骤 1:下载 Java Agent

从 SkyWalking 的官方网站下载 Java Agent: https://skywalking.apache.org/downloads/

步骤 2:配置 Agent

解压 Java Agent 压缩包,修改 config/agent.config 文件:


步骤 3:启动应用时添加 Agent 参数

在启动你的 Java 应用时,添加以下 JVM 参数:


步骤 4:查看链路追踪

启动应用后,发送几个请求,然后打开 SkyWalking UI,点击 "追踪" 菜单,就可以看到所有的请求链路了。

点击任意一个链路,就可以看到这个请求的详细信息,包括:

  • 请求的总响应时间

  • 每个服务的响应时间

  • 每个服务的调用参数

  • 异常信息 (如果有)

通过这些信息,我们可以快速定位到请求慢的原因,是某个服务调用慢了,还是数据库查询慢了。

五、进阶玩法:让你的监控更强大

除了基本的链路追踪功能,SkyWalking 还提供了很多强大的进阶功能,让你的监控更加全面。

1. 持久化追踪数据

默认情况下,SkyWalking 使用 H2 数据库存储数据,数据会在重启后丢失。在生产环境中,我们需要使用 Elasticsearch 来持久化数据。

修改 config/application.yml 文件:


2. 自定义链路追踪

有时候,我们需要追踪一些 SkyWalking 默认没有监控的方法,比如自定义的业务方法。这时候,我们可以使用 SkyWalking 提供的注解来实现自定义链路追踪。

首先,添加依赖:


然后,在需要追踪的方法上添加@Trace注解:


这样,SkyWalking 就会自动追踪这个方法的调用了。

3. 性能分析

SkyWalking 提供了强大的性能分析功能,可以帮助我们找出系统中的性能瓶颈。在 UI 界面的 "性能剖析" 菜单中,我们可以创建一个性能分析任务,SkyWalking 会自动收集指定时间段内的性能数据,并生成分析报告。

4. 日志收集

SkyWalking 还可以收集应用的日志,并将日志与链路追踪关联起来。这样,当我们看到一个异常请求时,可以直接查看对应的日志,快速定位问题。

5. 告警

SkyWalking 支持设置告警规则,当系统的某些指标超过阈值时,会自动发送告警通知。我们可以通过 Webhook、邮件、钉钉等方式接收告警。

六、总结:为什么每个微服务团队都需要 SkyWalking

在微服务架构下,系统的复杂度呈指数级增长,传统的监控方式已经无法满足需求。SkyWalking 作为一款优秀的 APM 系统,为我们提供了全方位的监控能力,从服务性能到链路追踪,从日志收集到告警通知,几乎覆盖了微服务监控的所有方面。

使用 SkyWalking,我们可以:

  • 快速定位问题,缩短故障排查时间

  • 提前发现性能瓶颈,优化系统性能

  • 全面了解系统的运行状态

  • 提高系统的可靠性和稳定性

可以说,SkyWalking 是每个微服务团队都必备的工具。如果你还没有使用 SkyWalking,强烈建议你尝试一下,它一定会给你带来惊喜。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐