![](https://i-blog.csdnimg.cn/blog_migrate/984a81c8f62b277be3dc00c10563ee3c.png)
初识skywalking
一、简介
随着微服务的兴起与流行,一些微服务架构下的问题也会越来越突出,服务之间的依赖关系愈发复杂。如果某个服务出现问题,寻找问题往往需要很长的时间,可能需要一个一个服务的查找问题,由此我们就有了一个新的工具去方便定位这个问题。这个工具就是APM(应用性能管理),他可以帮助我们在出现问题时,快速定位问题原因。skywalking就是这样的一款APM工具,他提供了完善的链路追踪能力。随着微服务的兴起与流行,一些微服务架构下的问题也会越来越突出,服务之间的依赖关系愈发复杂。如果某个服务出现问题寻找问题往往需要很长的时间,可能需要一个一个服务的查找问题,由此我们就有了一个新的工具去方便定位这个问题。这个工具就是APM(应用性能管理),他可以帮助我们在出现问题时,快速定位问题原因。
skywalking就是这样的一款APM工具,他提供了完善的链路追踪能力。
skywalking项目是由华为大牛吴晟开源的个人项目,目前已经加入Apache孵化器。Skywalking项目的核心目标是针对微服务、Cloud Native、容器化架构提供应用性能监控和分布式调用链路追踪功能。
二、APM背景
APM(Application Performance Management)即应用性能管理系统,是对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案。应用性能管理,主要指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。
随着微服务、云计算的发展,提升了应用的可用性、扩展性,同时也带来了运维、监控的复杂性,当我们需要从众多服务依赖中,查询出问题根源也越来越难。
系统的监控分为三个维度:
![](https://i-blog.csdnimg.cn/blog_migrate/a57c7513aa4ee59e47e09b4ae6688d5d.png)
1.Metrics指标性统计
一个服务的正确率、成功率、流量、TPS、响应时间等
2.Tracing分布式追踪
从请求开始到结束,服务节点之间的调用链路
3.Logging日志记录
程序在执行的过程中间发生了一些日志,会一帧一帧地跳出来给大家去记录这个东西,这是日志记录
三、分布式追踪
分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
![](https://i-blog.csdnimg.cn/blog_migrate/0f10b9367568a6c0d5ee974c668cd5f0.png)
四、skywalking简介
-
2015年开始开源,由原华为技术专家吴晟主导实现的专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM系统
-
专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计
-
apache顶级项目
五、特性
-
多种监控手段,语言探针和service mesh
-
多种语言探针:Java、.NET Core、PHP、Node.JS、GO
-
支持多种数据存储方式:ElasticSearch、MySql、TiDB、H2、Sharding Sphere
-
强大的UI可视化界面
-
高性能、高可用:agent端探针性能消耗低,服务端支持多种集群部署方式
-
支持多种指标的监控告警
-
微核+插件式扩展的高扩展框架
六、主要部分及其功能
skywalking主要由三大部分组成:Agent,Collector,Web:
-
Agent:作用是使用JavaAgent字节码增强技术将Agent的代码织入程序中,完成Agent无代码侵入地获取程序内方法的上下文并进行增强和收集信息并发送给Collector:与collector进行心跳表明Agent客户端的存活。
-
Collector:作用是维护存活的Agent实例,并收集从Agent发送至Collector的数据,进行处理及持久化。
-
Web:作用是将Collector收集的参数进行不同维度的展示
七、同类型对比
同类型的开源APM产品有:大众点评的Cat、韩国的pinpoint、老牌APM zipkin,综合比较skywalking是之中最值得推荐使用的产品。
八、skywalking优势
-
国内开源项目,社区成熟,且可与作者直接沟通
-
支持语言更多:Java、.NET Core、PHP、Node.JS、Golang
-
支持java自动探针,代码无入侵,只要简单配置,就可以自动实现各种指标、调用链的埋点
-
众多存储选择:ElasticSearch、MySql、TiDB、H2、Sharding Sphere
-
扩展性:支持模块、插件的可拔插
-
支持java语言的几十种插件,例如:Tomcat、RabbitMq、Kafka,且易于二次开发
-
性能:比其他开源软件性能都强
官网地址
apache官网
官方地址:
https://skywalking.apache.org/
中文官网:
https://skywalking.apache.org/zh/
下载地址:
https://skywalking.apache.org/downloads/
github官网
https://github.com/apache/skywalking