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

文静2年前技术文章489


前言

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

可观测历史

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

以往的排查过程?

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

11.png

OpenTelemetry 的模型

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

222.png

OpenTelemetry的数据结构化

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

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

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

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


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


总结

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


相关文章

RBAC

RBAC

API 对象在学习 RBAC 之前,我们还需要再去理解下 Kubernetes 集群中的对象,我们知道,在 Kubernetes 集群中,Kubernetes 对象是我们持久化的实体,就是最终存入 e...

EMR 配置 Hive on Spark

EMR 配置 Hive on Spark

Hive3 on spark 集成前置条件hadoop yarn环境正常oracle jdk 1.8版本1、spark2 下载准备https://archive.apache.org/dist/spa...

MySQL运维实战之ProxySQL(9.7)改写SQL

使用查询修改功能,可以在不改变应用程序的情况下,修改SQL语句。比如,我们可以使用SQL改写的功能,给SQL添加hint,以此来优化性能。delete from mysql_que...

MySQL性能优化(四)隐式类型转换

我们知道, where条件中,对一个索引字段进行运算会导致无法使用该字段的索引。有些情况下,即使没有显式地对索引字段进行运算,但是数据库会进行隐式类型转换,这也会导致无法使用索引。会发生隐式类型转换的...

apache Kyuubi部署及对接hive

apache Kyuubi部署及对接hive

1、背景客户重度使用spark sql,但是使用spark thriftserver存在各种各样的问题,我们选择使用kyuubi来替代spark thriftserver的使用2、安装包下载下载地址:...

使用clickhouse-backup迁移数据

使用clickhouse-backup迁移数据

说明上一篇文章中,我们介绍了clickhouse-backup工具。除了备份恢复,我们也可以使用该工具来迁移数据。这篇文章中,我们提供一个使用clickhouse-backup做集群迁移的方案。前置条...

发表评论    

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