可观测未来OpenTelemertry-结构化数据价值

文静2年前技术文章584


前言

开源软件和云供应商的软件开发模式已经改变了我们构建和部署软件的方式。集成开源软件,我们可以在很短时间内构建和部署一个应用程序。但这并不意味着使用和维护它们也变得更简单,随着应用程序的扩充,程序的调用变得更加复杂。对于问题的定位和分析变得更加困难,我们仍然需要用户的事务端到端的勘察工具来说明在处理这些事务的过程中资源是如何被消耗的。所以对观测性的需求是没有改变的,我们实时感测解决方案的方式需要改变。

可观测历史

早期我们观察系统时使用的是传统的筒仓式的工具,筒仓式也部分实现了实时监控和分析系统各个组件和节点的运行状态和性能指标。同时筒仓式大部分数据也是完全非结构化关联的,为了建立统一监控我们又对这些独立的结构工具进行了垂直整合。例如用户需要了解他们的应用正在执行的事务建立了一个独立的日志工具系统;为了监测应用程序运行时的资源建立一个指标监控系统;为了程序的一串执行中某些操作的关联又创建了追踪系统。然后一个被我们常用的独立的“三大支柱”观测性能力就建立了,以致于使用久了我们便不再会质疑它。但此方法也只是某些技术碰巧被实现的方式,可以说是观测一个探索过程的印记。

以往的排查过程?

让我们还原下运维人员在调查问题的真实经历,当注意到一个重要的指标时序出现"毛刺"就需要注意了。在这种情况下,在根据经验初步猜判断后,运维人员会始排查可能相关的日志、资源配置等。由于部分指标是完全相互独立的就会很难从监控系统中得到直接帮助。最常见的问题排查流程,是对日志执行一系列特别的查询和过滤,认真仔细的分析或者研发人员翻看相关的代码。当我们在程序调用复杂的今天,我们将如何排查?

11.png

OpenTelemetry 的模型

如果一个应用程序能够自动扫描和关联这些数据,那么运维人员能够专注于调查他们的系统是如何变化的,而不需要首先确定什么在变化,这就节省他们大量宝贵的时间。带着这样的设计OpenTelemetry把一些独立信息集中化,它以一种综合的方式生成追踪、日志和指标。所有这些连接的数据点以相同的协议一起传输,然后可以输入计算机程序,以确定整个数据集的相关性。让数据形成一股绳还不是独立的柱子。

222.png

OpenTelemetry的数据结构化

更完整的数据才能建筑更好的工具,对数据模型要满足2个要求:“所有的数据点都必须用适当的索引连接在一个图上”、“所有代表常见操作的数据点必须有明确的键和值”,下面介绍几个数据模型:

    a.    OT最基本数据结构是属性:由键值对组成的一种对所监测系统详细描述。

    b.    OT最基本对象是事件: 对于大部分非独特的事件的相同属性进行封装成上下文,然后把上下文的分为静态的(资源相关的,通常不改变)、动态的(一种跨度的span,每次调用其属性都会改变)

    c.   事件的聚合:为了统计观察事件出现的频率、超过某个阈值某个值如何随时间变化,这些需要对事件的聚合观察。这类聚合也会有一组属性和语义上的描述(也是我们的指标术语)。


    因为系统运行中的大多数问题都源于资源争夺,其中资源(静态上下文)描述了一个程序正在消费的物理和虚拟信息结构。比如服务、容器和区域都是资源。许多并发的事务需要在同一时间利用相同的资源,通过将事件放在它们所使用的资源的上下文中,就有可能自动检测出资源争夺。为了正确记录整个事务以及问题是由哪些操作触发的,需要记录跨度(动态上下文)描述计算机操作,当指标事件在跨度的范围内发生时问题时不需要猜测或寻找日志,OT明确地将追踪和指标联系在一起。


总结

事件、资源、跨度、指标和追踪:这些都被 OpenTelemetry 连接在一个图中,并且它们都被发送到同一个数据库,作为一个整体进行分析。这就是下一代的可观测性工具。


相关文章

SLS日志采集 

SLS日志采集 

创建Pjoject创建日志库接入日志新建机器组数据接入Logtail配置--添加Logtail配置选择需要的日志文本格式按下列步骤完成即可编辑日志格式配置查询分析数据...

PG的锁(一)

一、表级锁1.1 表级锁模式常见锁模式以及应用场景:ACCESS SHARE :select操作获取该模式锁资源,通常情况下所有只读取不修改表的查询都会获取该模式锁资源ROW SHARE : sele...

ES运维(二)字段类型与内存管理

ES运维(二)字段类型与内存管理

一、ES常见字段类型1、 概述字段是数据存储的最小微粒,根据数据的性质不同将数据分成不同的字段类型,熟悉不同字段类型的特性,对索引的Mapping设计、查询调优都极其重要。2、 关键参数In...

crs启动报错CRS-4124 CRS-4000

现象:crs启动报错CRS-4124 CRS-4000 CRS-0715# crsctl start crsCRS-4124: Oracle High Availability Services st...

MySQL 8.0 Clone 备份恢复演练

前言上一篇文章中,我们介绍了使用 Clone 插件进行备份,相关的恢复流程将在本篇文章介绍。MySQL 8.0 Clone Plugin 详解恢复增量数据的方法,使用的是伪装为 relay log 通...

Alluxio 部署

Alluxio 部署

1、基础环境准备配置java环境变量tar -xzvf jdk-8u281-linux-x64.tar.gz -C /opt ln -s ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。