Sky Walking 介绍 及 8.7.0 源码学习环境搭建

Sky Walking 概述

Sky Walking 时一个针对分布式系统的 应用性能监控器(APM)可观测性分析平台(OAP)。多维度应用性能分析手段,从分布式拓补图到应用性能指标、Trace、日志的关联分析与告警。它是一个为微服务、容器化和分布式系统而生的高度组件化的 APM 项目。

APM:Application Performance Monitor
OAP:Observability Analysis Platform

应用场景描述
用于分布式系统性能监控。它不是一个单纯的跟踪系统,它的跟踪是为了分析与监控服务的。它不是一个大数据为基础的 APM,即:它不依赖于大数据的生态,任何系统架构都可以使用它作为 APM。

优势

  1. 对传统分布式架构 和 云原生架构 具有一致性支持

  2. 易于维护(不引入过多的技术栈)

  3. 高性能

    15台OAP,20台ES 可以支撑 250 多台服务

    100%采样,合理的性能消耗(不到10%)

  4. 便于二次开发和集成(面向协议、模块化、提供网络接口)

Sky Walking 架构概要

在这里插入图片描述

在这里插入图片描述

SkyWalking 逻辑上分为四部分: 探针, 平台后端, 存储和用户界面.

  1. 探针
    基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.

  2. 平台后端, 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。
    分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标 和 用于扩展度量的计量系统自定义聚合分析。

  3. 存储
    通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统。

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

主要内容:采集上报,分析,持久化,可视化

  1. 采集上报:
    探针采集(Tracing 和 Metrics),语言探针或其他项目协议
    在新的架构示意图中,系统采集部分还多了 Logging 和 事件检查器(Event Detector),并且在他们和接收器中间还加了一个传输层。
  2. OAP 平台:
    由接收器、分析内核、查询内核三部分组成
    在新的架构示意图中,Tracing 和 Metrics 被拿到了外面,接收器 Receiver 也被单独拿了出来,并且可以做成集群。

Java 语言探针无侵入式埋点实现原理

原理:Java Agent 的启动时加载(静态 Java Agent,服务启动时指定,并在服务之前被类加载器加载)。

(类加载第一阶段)加载阶段,加载完Class字节码后对类的字节流进行修改,达到无侵入式埋点。

在这里插入图片描述

Instrumentation 是 JVM 对外提供的一个可以在类加载时修改被加载类的字节流的接口。

搭建源码学习环境

下载源码并导入idea

官网地址:https://skywalking.apache.org/
在这里插入图片描述
在这里插入图片描述
源码下载:apache-skywalking-apm-8.7.0-src.tgz

解压得到源码文件夹:
在这里插入图片描述
导入Idea:

第一次导入会比较慢,等待下载各种依赖和插件。

此时可以去官网下载中文文档项目:document-cn-translation-of-skywalking
在这里插入图片描述
下载后解压:

## 解压后的目录结构
   - document-cn-translation-of-skywalking-master
      - docs
          - .vuepress
          - zh
          - README.md
      - .gitignore
      - .travis.yml
      - LICENSE
      - package.json

README.md 改成 README_ZH.md,然后等 skywalking 项目准备完成后,把刚下载解压的中文文档项目的 docs 中的全部内容复制到 apache-skywalking-apm-8.7.0-src.tgz 解压后的项目对应的 docs 目录里面,这样就可以方便的查看中文文档了。
在这里插入图片描述

编译之前做一些修改

去除 maven-checkstyle-plugin 插件
插件作用:代码风格检查,用来规范代码风格的
修改 apm-webapp 的 pom.xml

apm-webapp 是前端项目,负责编译前端工程 skywalking-ui,这里会下载 node v8.17.0 的环境,编译时会卡住。

解决办法 (1) :
删掉这个部分的插件:frontend-maven-plugin ,不编译前端模块

解决办法 (2) :
修改插件中的下载镜像地址:
在这里插入图片描述
改成国内解析地址

此处选择第一个解决办法,因为本机已经安装过了 node 环境,需要使用前端时可以单独编译。

编译项目

## 项目根目录下编译,并跳过测试模块
mvn clean package -Dmaven.test.skip=true

编译完成后可以再根目录下看到一个dist目录,编译后是一个压缩文件。
在这里插入图片描述

使用 mvnw clean package -DskipTests 命令编译,所有打出来的包都在 dist 目录下,并且 Linux 下为 .tar.gz 文件,Windows 下为 .zip 文件

编译 apm-protocol 协议项目

利用官方提供 Protocol Buffers 工具将 protocol 文件编译成 java 文件。

cd apm-protocol
## 到 apm-protocol 目录中
mvn clean compile -Dmaven.test.skip=true

如果使用了 Mac Book M1 芯片,可能会找不到对应的 Protocol Buffers 工具osx-aarch_64解决参考

在这里插入图片描述
编译完成后在 apm-protocol\apm-network\target\generated-sources\protobuf\目录下出现两个源码目录,里面时编译出来的 java 代码,对应 apm-protocol\apm-network\src 中的 .proto文件。

右键这两个目录,将他们设置为 Sources Root:
在这里插入图片描述
这样查看源码时就不会有找不到的类了。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以按照以下步骤下载SkyWalking源码: 1. 在IDEA中点击"Import Project",选择SkyWalking源码目录导入IDEA中。这将是一个Maven项目,导入过程中会下载相关的依赖jar包,可能需要一些时间,请耐心等待。\[1\] 2. 修改demo-provider和demo-webapp模块的VM options参数,将其中-javaagent命令指向的skywalking-agent.jar路径更改为SkyWalking源码项目中的skywalking-agent.jar。具体路径可以参考引用\[2\]中的说明。\[2\] 3. 下载源码并导入IDEA。你可以从SkyWalking的官方网站或GitHub仓库下载最新的源码。然后在IDEA中选择"Open"或"Import Project",导入下载的源码。\[3\] 希望这些步骤对你有帮助! #### 引用[.reference_title] - *1* *2* [第08讲:搭建 SkyWalking 源码环境,开启征途](https://blog.csdn.net/Marion158/article/details/129421989)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Sky Walking 介绍8.7.0 源码学习环境搭建](https://blog.csdn.net/qq_33471737/article/details/120249492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值