日志服务Trace应用提供智能分析功能,用于分析可观测性数据和定位系统的异常根因。本文介绍可观测性数据的必要性、优势以及使用智能分析功能的方法。
系统必要属性-可观测性
随着IT系统几十年的飞速发展,开发模式、系统架构、部署模式和基础设施等都经历了多轮优化,实现了更快地开发和部署效率,但整个系统也更加复杂。开发需要依赖更多的人员和部门,部署模式和运行环境也变得更加动态和不确定。IT行业已经进入需要更加系统化、体系化进行观测的这一过程。
可观测性概念最早出现于20世纪70年代的电气工程,其核心思想是根据外部输出去推断系统目前运行的状态。相比传统的告警和监控,可观测性能够以更加白盒的方式看透整个复杂系统,帮助开发者更好地观察系统的运行状况,快速定位和解决问题。
可观测性主要依赖于Trace、Log和Metric数据。和传统监控相比,可观测性拥有诸多优势。传统监控只能去发现和通知那些已知可能会发生的故障,而可观测性则能够协助发现并定位未知的问题。
OpenTelemetry作为当下可观测领域主流的开源项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等标准化问题,提供与第三方vendor无关的服务。OpenTelemetry定义了三个Signal(Trace,Logging,Metric)规范、API、SDK和语义约定。
语义约定定义了键值,用于描述应用程序的可观察概念、协议和操作。语义约定可以更好地指导开发者统一系统的观测角度,方便沟通。
OpenTelemetry所定义的可观测数据格式基本上都是任意宽的结构,即为宽数据。可观测数据中除了必要的字段外都会包含可以承载任意键值对的字段,如Trace格式中的Attribute、Logging格式中的Attribute等。开发者可以往可观测数据中添加任意键值对,以增加对系统的观测角度。
下图中的数据,源于OpenTelemetry。仅用于示例说明。
宽数据的优势
利于统计:通过各种聚合函数,汇总各种关注的指标。
可观测数据包含的数据维度越丰富,可统计维度也就越多。例如在可观测数据中定义了六个数据维度(time、app、host、user、endpoint和status),那么通过这六个维度可以统计出半小时内所有发生502请求错误的用户、所有超时支付请求的用户等。
真实还原现场:通过丰富上下文,真实还原运行情况。
开发者可以通过可观测数据还原运行现场、调试错误请求。例如:
当请求到达服务时,开发者可以在Trace数据中添加请求参数、环境信息、运行时信息、主机/容器统计数据等信息。
执行代码时,Trace数据将记录用户ID和关键方法的入参。
当代码中的一个缺陷导致请求发生错误时,开发者可以通过Trace数据中的入参还原当时运行参数。
当Pod资源不够导致请求超时时,运维者可以通过Trace中的运行环境信息和指标还原当时的运行现场,找到问题。
发现异常行为下的模式:通过特定算法,协助发现并定位系统隐藏的未知问题。
可观测数据包含的属性越多,那么数据的维度越高,即越有可能发现系统中隐藏的未知问题。例如:上午10点总交易量下降了15%,则您可以分析总交易量的各个维度(省份,机房,类型等),在这些异常数据中发现数据中的模式:机房A的转账交易发生了下降。
整个分析过程的长短取决于数据维度的数量。数据维度越多,分析过程越长。
日志服务智能分析
异常定位-寻找影响最大的维度组合属性
每条Trace数据代表系统的一次请求,Trace数据会记录运行的环境信息、关键方法的入参等。系统每时每刻都有可能发生异常或慢服务,开发者需要通过庞大且多维的Trace数据挖掘异常数据下的模式。
智能分析是日志服务Trace提供的定位异常的工具,通过分析所有异常Span的维度找到异常行为下的模式,帮助您快速定位异常。智能分析过程如下所示。
通过条件过滤出异常的Span数据。
这些Span数据都会附带维度属性,例如Service、Host、Operation、Region等。
维度分析工具通过异常根因算法对关注的维度进行分析,寻找影响较大的维度组合属性的列表。
该列表按照维度组合属性的贡献度从高到低进行排序,您可以通过异常列表快速定位异常。
维度分析
当您在日志服务Trace应用中,打开Trace分析,智能分析将从平均延时和错误率这两个维度分析所查询的Span数据,获得隐藏在数据下的模式。
平均延时维度将分析所有超过P95延时的Span数据,获得造成慢请求的维度组合。
错误率维度将分析所有错误的Span数据,获得造成错误的维度组合。
①:过滤及查看待分析的Span数据。
②:选择对应的维度分析Span数据。
智能分析默认从service和name这两个维度进行分析。您也可以选择内置的分析维度进行快速分析或者自定义分析维度。
内置的分析维度
数据库分析:用于分析数据库相关的维度。
HTTP服务分析:用于分析系统中HTTP调用相关的维度。
主机分析:用于分析主机相关的维度。
版本分析:用于分析服务版本维度。
操作分析:用于分析服务操作维度。
自定义分析维度
您可以选择service、operation、host等字段,自定义分析维度。
分析结果
分析结果主要分为以下几个关键点:维度组合、贡献度、结果值和操作,如下图所示。
延时分析
错误率分析
①:维度组合,造成异常的维度组合。
②:结果值,该维度组合下的结果值。两个维度的结果值不一样。
延时分析下的结果值表示该维度组合下Span的P95值。
错误率分析下的结果值表示该维度组合下的错误率。
③:贡献度,范围为[0-1]。贡献度越高,表示该组合越是异常根因。
④:查询操作,您可以单击filter By或者Group by,快速查询到对应的Span数据。