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

文静2年前技术文章837


前言

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

可观测历史

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

以往的排查过程?

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

11.png

OpenTelemetry 的模型

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

222.png

OpenTelemetry的数据结构化

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

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

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

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


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


总结

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


相关文章

Doris FE节点故障恢复

Doris FE节点故障恢复

FE故障恢复现象:FE由于元数据损坏导致无法启动            &nbs...

Trino资源组配置

Trino资源组配置

1 概述Presto作为一个大数据场景下的交互式查询引擎,当使用达到一定规模,就会更多考虑资源分配问题,即保障重要任务优先获取资源。Presto资源组: Presto的资源组机制,是从资源分配的角度...

Hbase rowkey设计原则

HBase 中的 rowkey 设计需要遵循以下原则:1 rowkey 唯一原则若在 HBase 中向同一张表插入相同 rowkey 的记录,如没有设置版本数量,则此 rowkey 原先的数据会被覆盖...

Kafka Rebalance详解

1.rebalance概览rebalance中文含义为再平衡。它本质上是一组协议,它规定了一个 consumer group 是如何达成一致来分配订阅 topic 的所有分区的。比方说Consumer...

helm简介

helm简介

一、Helm 是什么在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理...

HBase 的 BulkLoad 机制

HBase 的 BulkLoad 机制

1.概述在实际生产环境中,有这样一种场景:用户数据位于HDFS中,业务需要定期将这部分海量数据导入 HBase 系统,以执行随机查询更新操作。这种场景如果调用写入 API 进行处理,极有可能会给 Re...

发表评论    

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