这里介绍下链路追踪的实现方案SkyWalking
参考地址:
- SkyWalking 极简入门 | Apache SkyWalking
- https://github.com/SkyAPM/document-cn-translation-of-skywalking
SkyWalking: 一个开源的可观测平台, 用于从服务和云原生基础设施收集, 分析, 聚合及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统, 甚至横跨多个云平台。SkyWalking 更是一个现代化的应用程序性能监控(Application Performance Monitoring)系统, 尤其专为云原生、基于容器的分布式系统设计.
特点在所有这些情况下,SkyWalking 应该运行良好
-
保持可观测性. 不管目标系统如何部署, SkyWalking 总要提供一种方案或集成方式来保持对目标系统的观测, 基于此, SkyWalking 提供了数种运行时探针。---如何从各种各种各样的系统中收集信息cuiyaonan2000@163.com
-
拓扑结构, 性能指标和追踪一体化. 理解分布式系统的第一步是通过观察其拓扑结构图. 拓扑图可以将复杂的系统在一张简单的图里面进行可视化展现. 基于拓扑图,运维支撑系统相关人员需要更多关于服务/实例/端点/调用的性能指标. 链路追踪(trace)作为详细的日志, 对于此种性能指标来说很有意义, 如你想知道什么时候端点延时变得很长, 想了解最慢的链路并找出原因. 因此你可以看到, 这些需求都是从大局到细节的, 都缺一不可. SkyWalking 集成并提供了一系列特性来使得这些需求成为可能, 并且使之易于理解.---------------收集必要的数据,为运维人员提供了多种分析的依据和图标
-
轻量级. 有两个方面需要保持轻量级. (1) 探针, 我们通常依赖于网络传输框架, 如 gRPC. 在这种情况下, 探针就应该尽可能小, 防止依赖库冲突以及虚拟机的负载压力(例如 JVM 永久代内存占用压力). (2) 作为一个观测平台, 在你的整个项目环境中只是次要系统, 因此我们使用自己的轻量级框架来构建后端核心服务. 所以你不需要部署并维护大数据相关的平台, SkyWalking 在技术栈方面应该足够简单。-----对被追踪的系统,影响小,不会拖累被追踪系统
-
可插拔. SkyWalking 核心团队提供了许多默认实现, 但这肯定是不够的, 也不可能适用于每一种场景, 因此我们提供了大量的特性来支持可插拔功能。---------针对不同的被追踪业务,提供了多种探针来解决,比如redis探针,http探针,mysql探针
-
可移植. SkyWalking 可以运行在多种环境下, 包括: (1) 使用传统的注册中心, 如 Eureka (2) 使用包含服务发现的RPC框架,如Spring Cloud, Apache Dubbo (3) 在现代基础设施中使用服务网格 (4) 使用云服务 (5) 跨云部署-------------部署简单,兼容性抢
- 可互操作. 可观测性是一个庞大的领域, 即使有强大的社区, SkyWalking 不可能支持所有方方面面, 因此 SkyWalking 支持与其他运维支撑系统进行互操作, 主要是探针, 如 Zipkin, Jaeger, OpenTracing 和 OpenCensus. SkyWalking 接收并理解他们的数据格式, 这对于终端用户来说是非常有用的, 因为不需要他们更换已有的库。----------能够接收和解析其它链路追踪实现的数据,这点感觉很重要cuiyaonan2000@163.com
SkyWalking 逻辑上分为四部分: 探针, 平台后端, 存储和用户界面.
- 探针 基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.
- 平台后端, 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标 和 用于扩展度量的计量系统 自定义聚合分析。
- 存储 通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。
- UI 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。
选择了最新的下载,配置上大同小异,下载地址 Downloads | Apache SkyWalking
下载并解压后的目录如下所示
- bin目录是服务启动脚本
- config目录是配置文件
- oap-libs目录是oap服务运行所需的jar包
- webapp目录是web服务运行所需的jar包
针对不同语言的探针需要单独下载!!!cuiyaonan2000@163.com
修改配置信息apache-skywalking-apm-bin/config/application.yml
这里简单配置一下主要是,选择skywalking存储数据的地方.这里选择的ES7.14.0
具体配置如下所示,同时可以在看到skywalking 所支持的多种数据存储方案
如上storage选择es,且只设置了用户,密码,和连接地址
启动OAP执行命令 oapService.sh 该启动会持续很长时间耐心等待.因为启动的时候会创建很多ES索引等初始化数据 ,对应的日志文件是skywalking-oap-server.log
启动UI执行命令webappService.sh 启动会持续很长时间耐心等待.因为启动的时候会创建很多ES索引等初始化数据 ,对应的日志文件是webapp-console.log
如果想要修改 SkyWalking UI 服务的参数,可以编辑 webapp/webapp.yml
配置文件。例如说:
server.port
:SkyWalking UI 服务端口。 默认是8080collector.ribbon.listOfServers
:SkyWalking OAP 服务地址数组。因为 SkyWalking UI 界面的数据,是通过请求 SkyWalking OAP 服务来获得的。
启动成功后访问IP:8080 访问界面如下所示: