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