目录
一、概述
1.1、简介
Application performance monitor tool for distributed systems, especially designed for microservices, cloud native and container-based (Kubernetes) architectures.
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计
它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。
Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目, 2017年12月SkyWalking成为Apache国内首个个人孵化项目, 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目,目前SkyWalking支持Java、.Net、Node.js、go、python等探针,数据存储支持MySQL、 ElasticSearch等, SkyWalking与Pinpoint相同,对业务代码无侵入,不过探针采集数据粒度相较于Pinpoint来说略粗, 但性能表现优秀, 目前SkyWalking增长势头强劲, 社区活跃, 中文文档齐全, 没有语言障碍,支持多语言探针,这些都是SkyWalking的优势所在,还有就是SkyWalking支持很多框架,包括很多国产框架,例如,Dubbo、gRPC、SOFARPC等,同时也有很多开发者正在不断向社区提供更多插件以支持更多组件无缝接入SkyWalking。
官方地址:Apache SkyWalking
代码地址:GitHub - apache/skywalking: APM, Application Performance Monitoring System
官方文档:Overview | Apache SkyWalking
其它资料:
skywalking/docs at master · apache/skywalking · GitHubGitHub - SkyAPM/document-cn-translation-of-skywalking: [已过期,请使用官网AI文档] The CN translation version of Apache SkyWalking documentSkyWalking 极简入门 | Apache SkyWalking
1.2、功能
分布式追踪:SkyWalking可以追踪分布式系统中的请求流程,记录每个请求经过的服务和组件,以及请求在每个组件中的耗时情况。通过分析追踪数据,可以了解系统中各个组件之间的调用关系和性能瓶颈,帮助开发人员快速定位和解决问题。
实时监控:SkyWalking提供实时的性能监控指标,包括各个服务的请求量、响应时间、错误率等。通过监控数据,可以及时发现系统的性能问题,并进行调优和优化。
服务依赖分析:SkyWalking可以分析系统中各个服务之间的依赖关系,包括调用关系和数据流向。通过可视化的方式展示服务之间的依赖关系,可以帮助开发人员理解系统的架构和流程,从而更好地进行系统设计和优化。
告警和报警:SkyWalking可以设置各种告警规则,当系统出现异常或性能下降时,可以及时发送告警通知。这样可以帮助运维人员快速响应和解决问题,保证系统的稳定性和可靠性。
数据可视化:SkyWalking提供丰富的数据可视化功能,可以将监控数据以图表的形式展示,帮助用户更直观地了解系统的性能和运行情况。同时,还可以根据需求自定义仪表盘,将关键指标集中展示,方便用户监控和管理系统。
- 服务、服务实例、端点指标分析
- 根本原因分析。在运行时分析代码
- 服务拓扑图分析
- 服务、服务实例和端点依赖分析
- 缓慢的服务和端点检测
- 性能优化
- 分布式跟踪和上下文传播
- 数据库访问指标。检测慢速数据库访问语句(包括SQL语句)
- 消息队列性能和消耗延迟监控
- 警报
- 浏览器性能监控
- 基础设施(VM、网络、磁盘等)监控
- 跨指标、跟踪和日志的协作 Skywalking 支持多种语言和框架,包括 Java、Go、Node.js 和 Python。它使用分布式追踪技术来监控应用程序内部和外部的所有调用,从而获得关于应用程序性能的完整见解。
体验地址:https://demo.skywalking.apache.org/General-Service/Services
用户名和密码皆为:skywalking
1.3、案例
阿里巴巴:将SkyWalking应用于其大规模的分布式系统中,提高了应用的性能和可靠性。
腾讯:使用SkyWalking进行微服务架构下的应用性能监控和问题排查。
华为:将SkyWalking集成到其云服务平台中,为用户提供了更好的应用性能监控体验。
二、架构
整个架构,分成上、下、左、右四部分:
- 上部分 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 :负责提供控台,查看链路等等。
SkyWalking 逻辑上分为四部分: 探针, 平台后端, 存储和用户界面.
- 探针 基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.
- 平台后端, 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标 和 用于扩展度量的计量系统 自定义聚合分析。
- 存储 通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。
- UI 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。
SkyWalking is logically split into four parts: Probes, Platform backend, Storage and UI.
- Probes collect telemetry data, including metrics, traces, logs and events in various formats(SkyWalking, Zipkin, OpenTelemetry, Prometheus, Zabbix, etc.)
- Platform backend supports data aggregation, analysis and streaming process covers traces, metrics, logs and events. Work as Aggregator Role, Receiver Role or both.
- Storage houses SkyWalking data through an open/plugable interface. You can choose an existing implementation, such as ElasticSearch, H2, MySQL, TiDB, BanyanDB, or implement your own.
- UI is a highly customizable web based interface allowing SkyWalking end users to visualize and manage SkyWalking data.
三、部署
3.1、windows环境部署
3.1.1、软件下载
软件下载:Downloads | Apache SkyWalking
3.1.2、软件解压
3.1.3、软件启动
先双击启动oapService.bat,后双击启动webappService.bat
3.1.4、验证
浏览器输入:http://localhost:8080/
3.2、Docker方式部署
3.2.1、拉取服务端镜像
docker pull apache/skywalking-oap-server:10.1.0
3.2.2、启动服务端镜像
docker run -d -p 11800:11800 -p 12800:12800 --name sw_oap apache/skywalking-oap-server:10.1.0
11800:SkyWalking OAP 服务器默认使用这个端口来接收来自 Agent 的数据上报
12800:SkyWalking OAP 服务器的 web 管理界面默认运行在这个端口上,通过这个端口可以访问到 SkyWalking 的 UI 界面
3.2.3、 拉取UI端镜像
docker pull apache/skywalking-ui:10.1.0
3.2.4、启动UI端镜像
docker run -d -p 8080:8080 -e SW_OAP_ADDRESS=http://192.168.1.100:12800 apache/skywalking-ui:10.1.0
3.2.5、验证
浏览器输入:http://hadoop100:8080/
参考资料: