随笔分类
链路追踪 SkyWalking*
分布式系统应用性能监控工具,提供分布式下链路追踪等支持
APM:Application Performance Managment,应用性能管理系统,对企业系统进行即时监控以来实现系统性能的管理和故障发现;APM系统可以帮助我们去理解系统行为、分析性能问题,以便在发生故障时,能够快速去定位和解决问题
而 SkyWalking本质上便是一个 APM系统,以来实现分布式下的链路追踪:随着分布式系统和微服务架构的出现,一次用户的请求会经过多个系统,不同服务之间的调用关系十分复杂,任何一个系统出错都可能会影响到整个请求的处理结果;以往的监控系统只能知道单个系统的健康状态、一次请求的成功失败,并不能快速去定位失败的根本原因
复杂的分布式系统会面临着这些问题:
-
性能分析
一个服务会依赖很多服务,被依赖的服务也依赖了其他服务;如果某个接口耗时突然变长了,那未必是直接调用的下游服务慢了,也可能是下游服务所依赖的其它服务自身出现了问题,因此,我们需要快速去定位耗时变长的主要原因
-
链路梳理
需求迭代很快,系统之间调用关系变化频繁,靠人工很难去梳理系统链路拓扑
第一个分布式链路追踪系统原因 Google推出的 Dapper,其思想也是现如今众多追踪工具所基于扩展的
而 OpenTracing提供了一个标准的、与供应商无关的框架,这方便于开发人员实现追踪系统的添加、更换,只需要简单地去修改下 Tacer的配置即可
OpenTracing由 API规范 (描述与语言无关的数据模型)、实现该规范的框架和库以及项目文档组成,OpenTracing不是一个标准,OpenTracing API项目正致力于为分布式跟踪创建更加标准化的 API以及工具
概述: SkyWalking是一个可观测行分析平台 OAP (Observability Analysis Platform)和 应用性能管理系统 APM,提供分布式链路追踪、服务网格要测分析、度量聚合和可视化一体化解决方案
功能:
-
多种监控手段:可以通过语言探针和 Service mesh获得监控数据
探针 Agent负责数据的收集 (Tracing和 Metrics),Tracing主要包含某次请求的链路数据,Metrics主要用来进行数据的统计,如 Http请求数的计算,Agent 探针会被安装到服务所在的服务器上,以方便数据的获取
Agent会去动态监控 Java应用上使用到的组件,获取运行数据发送到 OAP上进行统计和存储
-
多个语言自动探针:包括 Java、.NET Core以及 Node.JS
-
轻量高效:无需大数据平台以及大量的服务器资源
-
模块化:UI、存储、集群管理多种机制可供选择
-
支持告警
-
无侵入性
通过语言探针可自动集成,无需去修改代码,这也是本人较为看中的一点
-
支持的组件多:特别是对 Rpc框架的支持,这也是其它链路系统所不具备的;SkyWalking对 Dubbo、gRpc等有原生的支持,甚至连小众的 motan、sofarpc也都支持
主要概念:服务 (单独的一个引用)、端点 (服务对外暴露的接口)、实例 (引用部署的节点)
待补充