Skywalking是一个开源的应用性能监控(APM)系统,专为微服务、云原生架构和基于容器(如Docker、K8s、Mesos)的架构而设计。以下是对Skywalking的详细介绍:
一、概述
Skywalking由吴晟于2015年个人开源,2017年加入Apache孵化器,2019年4月17日Apache董事会批准SkyWalking成为顶级项目。它是一个国产的开源框架,主要开发人员来自于华为。Skywalking支持多种编程语言,如Java、.Net、NodeJs等,并且数据存储支持Mysql、Elasticsearch等。它采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀。
二、主要功能
- 分布式追踪:Skywalking可以追踪分布式系统中的请求流程,记录每个请求经过的服务和组件,以及请求在每个组件中的耗时情况。通过分析追踪数据,可以了解系统中各个组件之间的调用关系和性能瓶颈,帮助开发人员快速定位和解决问题。
- 实时监控:提供实时的性能监控指标,包括各个服务的请求量、响应时间、错误率等。通过监控数据,可以及时发现系统的性能问题,并进行调优和优化。
- 服务依赖分析:可以分析系统中各个服务之间的依赖关系,包括调用关系和数据流向。通过可视化的方式展示服务之间的依赖关系,可以帮助开发人员理解系统的架构和流程,从而更好地进行系统设计和优化。
- 告警和报警:可以设置各种告警规则,当系统出现异常或性能下降时,可以及时发送告警通知。这样可以帮助运维人员快速响应和解决问题,保证系统的稳定性和可靠性。
- 数据可视化:提供丰富的数据可视化功能,可以将监控数据以图表的形式展示,帮助用户更直观地了解系统的性能和运行情况。同时,还可以根据需求自定义仪表盘,将关键指标集中展示,方便用户监控和管理系统。
三、应用场景
Skywalking的应用场景非常广泛,包括但不限于以下几个方面:
- 性能监控:帮助实时监控应用的性能指标,如响应时间、吞吐量、错误率等,从而及时发现性能瓶颈。
- 故障排查:当应用出现问题时,帮助快速定位问题所在,提高故障排查效率。
- 服务治理:提供了丰富的服务治理功能,如服务依赖分析、服务健康度监控等,有助于更好地了解应用的结构和运行状态。
四、新版本特性
以Skywalking 10为例,它提供了一系列突破性的功能和增强功能:
- 服务层次结构:通过将服务和指标组织成不同的层次,并提供跨层无缝导航,从而简化了监控。
- 基于eBPF的Kubernetes网络监控:利用eBPF技术,提供了对网络流量、拓扑和TCP/HTTP指标的详细洞察。
- BanyanDB:作为高性能的原生存储解决方案出现,同时扩展的监控支持包括Apache RocketMQ、ClickHouse和Apache ActiveMQ Classic。
五、优势
- 支持多种语言和框架:包括Java、Go、Node.js和Python等,可以与常见的应用服务器和数据库集成。
- 轻量高效:无需大数据平台和大量的服务器资源。
- 模块化:UI、存储、集群管理都有多种机制可选。
- 社区活跃:目前增长势头强劲,社区活跃,用户可以获得持续的支持和更新。
综上所述,Skywalking是一款功能强大且易于使用的应用程序性能监控工具。它可以帮助开发人员和运维团队更好地了解应用程序的运行情况,并在发生性能问题时及时采取行动。