课时1:可观测(Trace)相关介绍

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 课时1:可观测(Trace)相关介绍

数据洞察创新挑战赛-智能运维赛新手训练营:课时1:可观测(Trace)相关介绍

课程地址:https://developer.aliyun.com/trainingcamp/5cc00cbb4c9f4bd4a337d41e8d253f74?spm=a2cwt.28237621.J_9603273760.4.31b2b726xTbsZG

可观测(Trace)相关介绍

 

内容介绍

一、 电气工程的可观测性

二、 SLS可观测性整体架构

三、 自动埋点原理

四、 观摩演示

 

一、电气工程的可观测性

 

image.png

 

可观测性概念最早起源于20世纪70年代。其核心思想是通过外部输出来推断系统当前的运行状况。这种方式与传统的告警和监控相比,可观测性以更为细致的方式揭示了复杂系统,它有助于更好地观察系统的运行状况,快速定位和解决问题。就像考虑发动机的情况一样,告警只会告诉你发动机是否存在问题。
而包含转速、温度和高压等信息可以粗略指出可能存在问题的区域。然而,要真正定位问题的细节,需要观测每个部件传感器的数据。

 

image.png

 

IT系统经过数十年的飞速发展,无论是开发环境、系统架构、部署模式还是技术设施,都经历了多轮的优化,以提高开发和部署效率。但是,随着系统的复杂性不断增加,开发涉及更多的人员和部门,部署模式和运行环境也变得更加动态和不确定。

因此,IT系统观测也需要更加有组织、系统化,体系化。我们知道大多数系统的外部输出通常包括三个主要部分。第一部分是日志(log),它可以详细记录每行代码的执行情况、参数和执行时间。然而,它产生的数据量巨大,包含了大量的细节,但是,这些数据通常没有上下文。

实际上,magic可观测性让我们能够从宏观角度全面了解整个系统的运行情况。例如,我们可以轻松查看CPU和内存的使用情况,即使在复杂的调用链中,trace也可以精确追踪每个方法的执行时间以及它们的运行上下文。

通过这些信息magic,log,magic,我们可以全面推断系统的整体运行状况,有助于在复杂的系统环境中迅速定位和解决问题。

接下来,让我们看看在复杂环境中使用可观测性数据时的几个关键步骤。


image.png

首先,当我们收到告警时,我们会根据告警提示magic,log来查看当前系统的指标数据,去确定日志。然后,通过日志,以获取有关这次请求的唯一标识符(通常称为调用ID)。有了这个调用Trace ID,我们可以精确地追踪整个请求的调用顺序、执行时间和运行情况,这有助于我们详细分析问题。

现在已经有很多系统帮助我们收集magic,trace,log。

本身也不帮助提供存储及智能化的算法,但是在这种情况下,SLS提供了一个平台我们快速搭建可观测性系统,在有这些的帮助之下会更加的容易,以下是SLS的可观测整体架构。

image.png

 

二、SLS可观测性整体架构

将Trace,log,magic进行了存储,并且会自动关联这些可观测数据,提供了盘古底座,提供了高性能的算力,提供准确高效的查询性能,帮助我们及时的发现问题,然后同时还提供了很多处理方式,例如函数等,在存储算力的上一层提供了智能化的能力帮助我们在大量的数据中去发现和定位我们的问题。同时提供了非常丰富的UI继承和告警的集成。
在介绍了整体可观测性解决方案之后,让我们深入了解trace相关知识。

这实际上包括三个部分。首先是数据采集端,它负责收集数据。这部分涉及到许多开源系统和主流协议,比如者以及其他协议。
image.png

这些数据会被统一存储到SLS中,并通过我们自身提供的算法来提取有用的信息,如服务依赖关系、服务自动发现、上下游分析、中间件分析和质量分析服务的告警。

接下来,我们将介绍探针的原理
image.png

 

探针分为三类:全自动、半自动和手动。全自动探针可以自动完成,无需手动更改代码。半自动探针只需更改部分框架代码。手动探针需要手动添加代码,类似于编写代码。这三种类型并不是互斥的,它们可以相互结合使用,以更好地帮助我们定位问题,全自动支持的语言有Java,Net,Python,半自动Golang,NodeJS.手动就是包括所有语言。

 

三、自动埋点原理

 

image.png

 

接下来,介绍一下自动埋点的原理,以Java为例,自动埋点利用Java的API进行注册。我们只需实现一个特定的方法,该方法提供了原始类的内容,然后使用字节码修改工具对代码进行修改,最终能够自动添加到我们的业务类中去添加代码。
整个原理就是在注册完成后,JVM会在加载类文件时自动调用我们的方法来修改类字节码,最终定义新的类。


接下来,介绍一下半自动埋点的原理
image.png

 

半自动埋点需要我们部分修改代码,以上是以 golong的HTTP服务为例,我们会在代码中注入一些方法,例如解析上下文和创建埋点代码,这个方法会注入埋点代码,实际上我们可以通过引入OpenTelemetry的包并创建所需的类来实现。
image.png

手动埋点的方式,手动埋点实际上就是说我们本身写业务代码一样通过API调用它的一些代码,比如我想记录一些异常的事件,或额外的字段,记录外的字段在业务场景下非常的有用,比如假设我想统计下每一个用户的行为轨迹,这样只需把用户ID记录进去,就可以增加用户维度的统计。

image.png

当成功接入了之后,每次请求都会将相应的Trace数据上报到SLS中。接下来,通过Trace详细信息,我们可以查看每次请求的调用轨迹。
image.png

左侧的调用轨迹图显示了不同服务之间的调用情况。实现代表了每个方法独占的时间,下面是整个Trace调用的轨迹,当我们点击左侧span的时候,右面会出现span很多详细的信息,包括资源的信息,线程等,同时还会有记录的业务字段的属性等一系列的信息。span具体的属性字段,调用类型,目前分为5类,一是producer,consumer,这两个是对应于消息中间件的发送者和消费者的关系。internal为内部的调用,不同的颜色代表不同的服务,在记录一些服务名及调用名。

 image.png

 

四、观摩演示

通过Trace关联有关下游方法及其日志记录。

image.png

一旦我们将系统集成到前端可观测实例中,我们可以在该实例中查看当前系统的运行情况,例如错误率、平均响应时间以及差异的服务。

然后,我们可以点击应用程序进行查看。

image.png

我们可以直接搜索正在发生的请求。在我们的系统中,我们已经模拟了一个出错的请求。我们可以通过搜索来直接定位这种请求,在这个请求中,我们可以选择一个并查看其场景。
通过详细信息,我们可以清晰地看到,其中一个SPAN占据了大部分时间,并且都是由它引发的错误。
image.png

接着,我们继续查看整个调用轨迹。在这里,我们可以看到在调用“防震”接口后,出现了一个黄色的“order”接口,它的耗时约为5秒。

接下来,我们看到“Order”系统在此处出现了问题,我们将继续分析。
image.png

接下来,我们可以直接再次请求“payment”接口。这次请求的耗时超过了六秒,并且发生了错误。

我们可以通过右侧的属性查看状态码、请求参数和线程信息,通过更详细的情况,我们可以查看当前请求的相关日志。

image.png

 

此外,我们还可以查看当前主机的一些指标,例如服务使用率和内存使用情况,以更好地帮助我们定位问题。
除此之外,我们还可以通过详情中的分析来查看整个服务的一些性能情况,例如是否存在重复的调用、服务数量以及数据库或外部服务的延迟。

image.png 

 

最后,我们可以观察同类延迟的分布情况,这里已经完成了50%的统计,可以看到存在一些分化,特别是超过500秒的错误,基本上都是由我们的服务引起的。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
|
人工智能 监控 Serverless
|
存储 数据采集 人工智能
以Trace为核心的根因分析概述
近期一直在学习和复现“根因分析”领域的相关文章,在这里跟大家一起分享下相关内容。这里不在赘述关于“可观测性”和“AIOps”的重要性和必要性,也不过多的陈述在“复杂系统”中进行快速根因诊断的必要性,直接进入到相关算法和系统设计部分。
1540 0
以Trace为核心的根因分析概述
|
4月前
|
人工智能 监控 数据库
LLM 应用可观测性:从 Trace 视角展开的探索与实践之旅
基于大语言模型的应用在性能、成本、效果等方面存在一系列实际痛点,本文通过分析 LLM 应用模式以及关注点差异来阐明可观测技术挑战,近期阿里云可观测推出了面向 LLM 应用的可观测解决方案以及最佳实践,一起来了解下吧。
18282 26
LLM 应用可观测性:从 Trace 视角展开的探索与实践之旅
|
Java API
LOG4J2-MDC-全链路跟踪等功能研究
LOG4J2-MDC-全链路跟踪等功能研究
320 0
|
6月前
|
Java Spring
日志精准记录:Spring与Log4j完美整合的实战指南
日志精准记录:Spring与Log4j完美整合的实战指南
295 0
日志精准记录:Spring与Log4j完美整合的实战指南
|
缓存 前端开发 JavaScript
如何通过观测云的RUM找到前端加载的瓶颈--可观测性入门篇
网站性能优化既离不开不断演进发展的技术,也离不开前人对技术优化的方法论和具体实践。如何通过观测云的RUM找到加载性能的瓶颈?
103 1
如何通过观测云的RUM找到前端加载的瓶颈--可观测性入门篇
|
存储 机器学习/深度学习 运维
课时1:日志服务 SLS 可观测数据分析平台介绍
课时1:日志服务 SLS 可观测数据分析平台介绍
|
监控 Serverless 开发工具
课时7:函数计算的可观测性
课时7:函数计算的可观测性
|
人工智能 监控 Serverless