临高县网站建设_网站建设公司_外包开发_seo优化
2025/12/23 18:46:40 网站建设 项目流程

1.概述

在当今微服务架构盛行的时代,一个看似简单的前端请求,背后往往涉及数十个甚至上百个服务的协同调用。当系统出现性能问题或异常时,仅靠传统日志监控往往如同“大海捞针”,难以迅速定位问题根源。

正是在这样的背景下,SkyWalking—— 一款优秀的国产开源分布式链路追踪与性能监控系统应运而生。该项目最初由吴晟(华为开发者)个人开源,于2017年进入Apache孵化器,并最终成为Apache顶级项目。截至目前,SkyWalking在GitHub上已收获超过25k的Star,足以证明其强大的影响力和广泛的应用前景

1.1 SkyWalking 是什么?

SkyWalking 是一个开源的可观测性平台,用于从服务、云原生基础设施中收集、分析、聚合和可视化数据。它提供了清晰的分布式系统观测能力,并支持跨云、跨集群的统一监控。作为现代化的应用性能监控(APM)系统,SkyWalking 尤其适合云原生和基于容器的微服务架构。

核心优势:
  • 无侵入探针:通过Java Agent字节码增强实现监控,无需修改业务代码
  • 高性能通信:采用gRPC进行数据传输,效率高、延迟低
  • 功能全面:支持链路追踪、JVM监控、服务依赖分析、告警等
  • 生态友好:完美支持Spring Cloud、Spring Boot等主流微服务框架
典型应用场景:
  1. 性能瓶颈诊断:快速定位慢查询、高延迟接口
  2. 全链路追踪:可视化展示请求在微服务间的完整调用路径
  3. 服务依赖分析:自动绘制服务拓扑,识别关键依赖与瓶颈点
  4. 异常根因定位:结合链路、指标与日志,迅速定位故障源头
  5. 容量规划参考:基于历史性能数据进行资源预测与扩容决策

1.2 主流链路追踪框架对比

随着微服务架构的普及,分布式链路追踪技术也日趋成熟,目前主流的开源方案包括:

  • Spring Cloud Sleuth + Zipkin:需代码埋点,侵入性强
  • 大众点评 Cat:同样需要侵入式埋点,接入成本较高
  • Pinpoint:韩国团队开发,同样基于字节码增强,无侵入
  • SkyWalking:国产开源,无侵入、性能好、社区活跃

SkyWalking 与 Pinpoint 均通过字节码注入实现监控,对业务代码零侵入,是目前企业级APM系统的优选方案。对于国内开发者而言,SkyWalking 具有中文文档丰富、社区响应快、与国内技术栈整合度高等优势,更值得推荐。

2.SkyWalking 架构与原理

SkyWalking 核心架构组件逻辑上分为四部分: 探针(Agent)、 平台后端(OAP),存储(Storage)和用户界面(UI)

  • 探针(Agent):收集监控数据, 将数据格式化为 SkyWalking 适用的格式,然后传递给中间的OAP服务器。

  • OAP:全称即图上的Observabilitiy Analysis Platform, 完成数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程

  • 存储通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。

  • UI一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。

SkyWalking 利用Java Agent技术,在类加载阶段动态注入监控逻辑,无需改动源码:

// Skywalking通过javaagent在类加载时动态注入监控代码// 不需要修改业务代码publicclassSkywalkingAgent{publicstaticvoidpremain(Stringargs,Instrumentationinst){// 1. 注册类文件转换器inst.addTransformer(newClassFileTransformer(){publicbyte[]transform(...){// 2. 使用ByteBuddy/Javassist修改字节码// 3. 在方法入口/出口插入监控逻辑}});}}

这种方式既保证了监控的全面性,又实现了对业务的完全透明。关于javaagent知识点请另外自行查阅资料。

3.SkyWalking 安装与部署

基于上面对Skywalking架构原理的介绍,相信大家已经对它已经有了一定的认识了解,接下来我们就来开始搭建一个强大的监控系统。

3.1 下载安装包

去官网:https://skywalking.incubator.apache.org/downloads/ 下载,我这里选择版本是:v9.7.0

3.2 解压与调整配置

tar-zxvf apache-skywalking-apm-9.7.0.tar.gz

解压之后有一个文件夹,文件信息如下:

  • bin:存放一些可执行的脚本,比如说启动Skywalking OAP服务的脚本

  • **config:**存放配置文件,这里是我们需要关注的,有OAP服务的配置文件applicaiton.yml。配置项太多了所以这里我随便列举两项看看

    cluster:# 默认单例部署,也可以集群部署,比如说通过注册中心nacosselector:${SW_CLUSTER:standalone}storage:# 数据存储默认是内存数据库h2,生产环境一般推荐elasticsearch,官方也强烈建议selector:${SW_STORAGE:h2}

    由于我是本地搭建演示,就完全按照默认的即可,没有做任何修改

  • **webapp:**UI服务,默认端口是8080,但一般这个端口被占用了,所以需要修改一下webapp/application.yml,我这里改成:8181

serverPort:${SW_SERVER_PORT:-8181}# Comma seperated list of OAP addresses.oapServices:${SW_OAP_ADDRESS:-http://localhost:12800}zipkinServices:${SW_ZIPKIN_ADDRESS:-http://localhost:9412}

3.3 启动服务

# 启动OAP后端bin/oapService.sh# 启动UI前端bin/webappService.sh

启动后访问http://localhost:8181即可进入SkyWalking监控控制台。

4.Spring Boot接入指南

在启动命令中添加Java Agent参数

-javaagent:/Users/shepherdmy/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=shepherd-demo01-service -Dskywalking.collector.backend_service=localhost:11800

项目启动成功之后,Skywalking会监控到一个名为shepherd-demo01-service的服务,如上图所示。可看到对应的服务名称、实例、接口调用链路等信息

  • 服务概览:展示服务负载量、接口请求平均响应时间、成功率等关键指标

点击服务名进入监控指标概览页:

  • 实例详情:查看实例下的监控指标信息,如JVM内存、CPU、GC等情况

点击Instance,可以查到该服务的实例列表

点击实例名进入,可以查看这个实例下的监控信息:

查看实例的jvm信息:

  • 查看EndPoint端点信息

端点可以简单理解为是被监控服务所接收的请求。

点击GET:/user/page端点进去,可以查看这个请求的监控信息:

该请求GET:/user/page逻辑是先查询Redis,有缓存数据就直接返回,没有再根据参数去数据库MySQL查询数据存入Redis之后返回,这里详细展示了请求的整个调用链路,非常清晰直观。

  • 拓扑图:可视化服务间依赖关系

5.总结

SkyWalking 提供多层级的监控指标,助力全方位系统可观测:

层级监控指标示例
服务级别P99/P95延迟、请求量、错误率
实例级别CPU使用率、JVM堆内存、线程数、GC次数
接口端点慢接口TOP10、错误接口TOP5、调用链详情
数据库慢SQL查询、连接池状态、执行时间分布

SkyWalking 作为一款开源APM系统,凭借其无侵入的设计卓越的性能表现以及活跃的中文社区,已成为众多企业微服务监控的首选方案。无论是开发调试、性能优化,还是线上故障排查,SkyWalking 都能提供强大的数据支持和可视化能力。

合理部署与使用SkyWalking,不仅能提升系统稳定性,还能显著降低运维复杂度,是现代分布式系统可观测性建设中不可或缺的一环。


本文初步介绍了SkyWalking的核心概念、部署流程与接入实践,关于微服务链路追踪的更深层原理、Trace与Span的组成、以及与Log4j2/Logback等日志框架的整合,我们将在后续文章中继续探讨。欢迎关注交流,共同进步

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询