首页 > 其他分享 >微服务 - 应用性能监测 · 链路追踪 · 概念规范 · 产品接入 · 方法级追踪 · 创建指标跨度

微服务 - 应用性能监测 · 链路追踪 · 概念规范 · 产品接入 · 方法级追踪 · 创建指标跨度

时间:2023-12-11 10:55:40浏览次数:36  
标签:... Span 数据 OpenTelemetry 链路 服务 跨度 追踪

系列目录

微服务 - 概念 · 应用 · 架构 · 通讯 · 授权 · 跨域 · 限流 微服务 - Consul集群化 · 服务注册 · 健康检测 · 服务发现 · 负载均衡 微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发 微服务 - Nginx网关 · 进程机制 · 限流熔断 · 性能优化 · 动态负载 · 高可用 微服务 - 应用性能监测 · 链路追踪 · 概念规范 · 产品接入 · 方法级追踪 · 创建指标跨度

本文从 [场景/概念/定义],演变的统一规范,再到滋生出的各类开源产品,产品的接入,应用案例等的阐述。

涉及到的组件及版本:.NET 6,OpenTelemetry v1.6,SkyWalking v8.9.1,Jaeger v1.51,Prometheus v2.48

一、概念及定义

1.1 面临的场景

现代互联网服务通常被开发成复杂的、大规模的分布式系统。在分布式系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器或第三方等相互调用才能完成。在这一完整的调用过程中,有串行执行的,也有并行执行的,有关业务走向的,有关处理能力的等等。

  随着微服务和云原生开发的兴起,越来越多应用基于分布式进行开发,但是大型应用拆分为微服务后,服务之间的依赖和调用变得越来越复杂,这些服务是由不同团队开发的软件模块集合构建的,可能使用不同的编程语言,并且可能跨越多个物理设施中的数千台机器,他们之间提供的接口可能不同(RPC/API等)。在这种情况下,我们如何才能快速的确定某次请求都调用了哪些应用?哪些模块?哪些节点?以及它们的先后顺序及各部分的性能如何呢?

1.2 Observability

Observability 可观测性是指如何通过检查系统的运行数据,来了解系统的内部状态。它从各种来源收集和分析数据,以针对环境中运行的应用程序的行为提供详细见解。它可以应用于任何您构建的并希望进行监测的系统。

  可观测性很重要的原因在于 [发现],借助可观测性,可让软件工程师、IT、DevOps 和项目团队解读遥测数据。借助仪表板、服务依赖关系图和分布式跟踪等可视化功能,甚至 AI 和机器学习方法,轻松完成。有了合适的可观测性解决方案,就可以了解应用程序、服务和基础架构在跟踪和响应问题方面的表现。让团队评估、监测和改进分布式 IT 系统的性能。甚至可以主动诊断、分析问题,并追溯问题根源。 

1.3 应用程序性能监控

Application Performance Monitoring (APM),观测的一种方式,可观测性的子集。APM 解决方案可收集和监测来自各种网站、软件应用程序和服务的遥测数据,并对数据进行分析。是组织快速识别和解决应用程序和代码中任何性能问题的过程。

  APM 会使用一套工具和方法来监测和管理软件应用程序的性能。APM 工具一般包括对关键指标的监测,以此来识别和诊断性能瓶颈和问题。一些关键的指标例举:请求率/错误率/响应时间/服务实例数/硬件利用率等。设定各指标的范围(如内存剩余低于20%时),做出响应告警。
如下图监控指标示例:

  APM 还可以提供详细的分布式链路追踪和故障排查信息,也是解决以上面临的场景提出来的问题,将每次分布式请求过程中的每个环节的执行情况,按序/耗时/状态/并串型等,很直观的集中展示出来。协助开发人员了解和修复代码中的问题,快速排查及隐患及预估处理能力等。这通常包括告警和报告功能,以让相关方始终了解应用程序的性能。这种多个节点串联起来的请求过程称为 Tracing。
如下图所示的 Trace、Span、Time 关系图:

Trace

Tracing 链路追踪是一种用于分析和监视应用程序的方法,尤其是那些使用微服务体系结构构建的分布式的应用程序。一个完整请求链路的追踪(TraceID)用于查出本次请求调用的所有服务/接口/组件等,调用的每个服务/接口/组件等都被称为跨度(Span),用来记录调用顺序,上游跨度(ParenetID)用来记录调用的层级关系。调用时间周期Timestamp,是把请求发出、接收、处理的时间都记录下来。跨度还可以记录一些其它属性信息,比如发起调用服务名称、被调服务名称、返回结果、IP、请求状态、日志、故障等。最后再把拥有相同(TraceID)的跨度(Span)合成一个更大范围的试图,就形成了一个完整的单次请求调用链。

通过以上提到的 [监控] [链路],APM 能够对应用程序的执行情况提供连续不断的详细见解。团队可以利用这些见解,更加积极主动地解决问题,而不是等到客户投诉了才有所行动。APM 有多种用途。例如,团队可以针对用户体验过程中的性能下降设置告警,衡量最新版本的影响,并就哪些地方需要改进做出明智的决策。

总结起来,它可以使得我们发现很多不曾注意到的细节,发现隐蔽的循环依赖,及早的发现问题,定位问题,优化改进,也可以帮助新人理解业务等等。

作者:[Sol·wang] - 博客园,原文出处:https://www.cnblogs.com/Sol-wang/

二、发展及产品

2.1 最初概念

从最初 Google 公司在 Dapper 中提到的 trace、span、annotation 概念:

  • Trace:一次完整的分布式调用跟踪链路;
  • Span:跨服务的一次调用,多个Span组合成一次Trace记录;
  • Annotation:用来记录请求特定事件的相关详细信息及补充;

但 Google-Dapper 并没有开源,它是 Google 内部长期经过打磨后形成的产品,于2010年公布,对外是一篇论文,讲述的是分布式链路追踪的理论和 Dapper 的设计思想。大致由 [植入应用、收集跟踪数据、图形化UI] 三部分组成。后续市场的发展,有很多链路追踪系统也是基于 Dapper 论文的思想和理论为基础的。个人觉得 Google-Dapper 实现了两大方面:监控(发现细微的变化)、跟踪(及时定位并处理)。

2.2 统一规范

于2016年开始的 OpenTracing 项目得到绝大多数相关团队的认可,为分布式追踪,提供统一的概念、规范和接口。它是一个轻量级的标准化层,并不是功能实现代码,它只是为跟踪数据,用代码定义了一套数据模型,和一套API,是供统一遵循的规范,用于在应用程序中创建和管理这些数据模型。现在大多数链路跟踪产品系统都在尽量兼容遵循 OpenTracing 设计原则。

标签:...,Span,数据,OpenTelemetry,链路,服务,跨度,追踪
From: https://www.cnblogs.com/Sol-wang/p/17297066.html

相关文章

  • 数据链路层-MAC多点访问控制协议
    解决的问题对于一个共享性介质(总线型局域网的总线),各个节点如何协调对它的访问和使用?通过各种途径来控制对共享介质访问的方式,在数据链路层称为多点访问控制协议。多点访问控制协议按照访问方式分为三种类型:信道划分方式、随机方式、轮流方式。信道划分方式频分复用:FDM(Frequ......
  • vue的响应式原理:依赖追踪
    在明白原理之前,我们有很多表面现象、使用场景需要记忆。明白了原理后,你会发现它们已经不需要记了,因为从原理出发,你自己都能把它们推导出来,一切是那么的自然而然。感觉就是:这还用记吗?很明显嘛!之前我对vue的响应式原理,只是一知半解,导致开发中经常会出现疑问,比如:为什么有的数据它不......
  • 从入口域名开始探索全链路自动化拓扑
    运维自动化之域名系统的文章发出去之后,有小伙伴问既然拿到了域名及所有基础资源数据,那能不能从入口域名开始实现全链路自动化的系统拓扑构建?全链路的系统拓扑构建需要知道链路上所有节点之间的数据流转关系,之前在落地APM监控时有接触过,APM通过代码埋点拿到链路节点之间的数据流转......
  • Aloudata 余俊:数据虚拟化技术如何实现敏捷高效的逻辑数据集成与链路编排
    一、Data Fabric 与数据虚拟化简介在正式介绍 Data Fabric 之前,我想先回顾一下我们现有的数据仓库体系面临的问题。当提到数据仓库时,许多从事数据工作的人可能会想到 ETL(抽取、转换、加载)和一些技术工具,如 Hive、Hadoop 和 Spark。我在过去十多年一直在数据仓库领域工作,与......
  • 开启信号追踪
    通过内核参数monitor_signals进行配置,参数内容为欲监控signal掩码。MASK=1<<(N-1)其中,MASK表示信号掩码;N表示信号值。若要监控多个信号,则需要将各个信号的掩码进行或操作。示例1:若要监控signal17,则掩码为0x10000示例2:若要监控signal17和9,则掩码为0x10100可......
  • 微信支付-业务流程图+时序图梳理微信支付链路+封装对接微信API工具类
    因业务需要,开发微信支付功能,涉及三种支付方式:JSAPI支付:微信内网页支付,需要开通微信服务号小程序支付:在小程序中支付,需要开通小程序H5支付:在手机浏览器(出微信内网爷)中网页支付使用微信支付的前提必开通微信商户号,要使用到那种的支付方式要前需在商户平台开通(要审核)。支付......
  • 视频操作--3.视频追踪
    ......
  • 全链路压测自动化实践
    全链路压测自动化实践是指在软件开发过程中,通过自动化工具和技术来模拟真实的业务场景和流量负载,对应用程序的各个环节进行全面的压力测试。下面是一些关于全链路压测自动化实践的内容: 1、环境准备:在进行全链路压测自动化之前,需要准备相应的测试环境。包括搭建开发、测试和生......
  • Jaeger Client Go 链路追踪|入门详解
    目录从何说起Jaeger部署Jaeger从示例了解JaegerClientGo了解trace、spantracer配置Sampler配置Reporter配置分布式系统与span怎么调、怎么传HTTP,跨进程追踪客户端Web服务端Tag、Log和Ref 从何说起之前参加柠檬大佬的训练营(免费白嫖),在大......
  • 全链路追踪
    三个追踪级别:跨进程追踪(cross-process):调用另一个微服务数据库追踪进程内部的追踪(in-process):在一个函数内部的追踪可观察性(Observability)可观察性更关注的是从系统自身出发,去展现系统的运行状况,更像是一种对系统的自我审视。可观察性目前主要包含以下三大支柱:日志(Log......