OpenTelemetry日志体系

news2024/11/17 8:47:08

前言

OpenTelemetry为了实现其可观测性有三大体系:TraceMetricsLog。本文将对于OpenTelemetry实现的日志体系进行详细的讲述。

日志

说到日志相比大家都能侃侃而谈:帮助快速定位出现的问题,数据追踪,性能分析等等。日志可以说是与开发者们紧密关联常常使用到的东西。经过了多年的发展迭代,日志的体系也在不断变化,涌现了elk这种分布式日志的体系,能够便捷的帮助进行日志的管理和查询。

OpenTelemetry Log

OpenTelemetry中,不属于TraceMetrics的部分都可以视为日志。例如,event可以被认为是一种特殊的日志。

OpenTelemetry Log并没有单独拉出来组建一套日志的体系,而是全面拥抱现有的解决方案,在当前的众多日志类库的基础上进行对于可观测性的改进和整合。

OpenTelemetry Log的意义

传统日志的缺陷

现有的日志解决方案没有办法很好的和可观测性解决方案进行集成。日志对于追踪和监控的支持非常有限,通常是通过link的形式。而这种形式往往有部分数据不够完整。并且日志没有一个标准化的传播和记录上下文的解决方案,在分布式的系统中往往会导致从系统的不同组件收集到无法关联起来的日志。

像上图这样不同的库有不同的采集协议采集方式,后端的服务很难将这种没有统一规范的杂乱数据进行统一,因此OpenTelemetry日志的统一规范就很有必要了。

OpenTelemetry日志的解决方案

本质上来说OpenTelemetry Log其实也就是应用的日志,和当前大家使用的日志体系并没有本质的区别。在Trace中广泛使用到的上下文传播的能力可以在日志中进行应用,这样可以丰富日志的关联能力,并且可以将日志与同是OpenTelemetry体系的metrics和trace关联到一起,遇到故障的排查会更加的便利。

假设这么一个场景:生产环境突发告警,然后排查到调用链路异常漫长需要排查原因,这个时候单纯的日志排查就显得很慢了,往往需要具体的报错信息或者是固定的时间点来进行定位。但是OpenTelemetry Log则可以通过异常链路的排查直接从链路定位到关联的日志之中,使得排查的难度大大降低。

对于TraceMericsOpenTelemetry提供了新的API,而日志则比较特殊,当前的各个编程语言已经有了非常成熟的日志苦,例如Java的Logback和Log4j等等。

为了解决这些问题,OpenTelemetry做了如下的努力:

  1. 定义了一个日志数据模型。数据模型的目的是对LogRecord的定义,日志系统的记录、传输、存储和解释等等有一个标准的规范。
  2. 将现有的日志格式与OpenTelemetry定义的日志数据模型进行对应,并且collector将支持此种数据格式的转换。
  3. 提供LogRecord的API给库的开发者提供丰富的能力。
  4. 提供SDK来对LogRecord进行配置处理和导出。

上述的种种使得OpenTelemetry能够读取现有系统的应用程序日志,并且可以将其转化为OpenTelemetry定义的数据格式,以此来实现统一。

OpenTelemetry Log的使用

日志的关联

我们之前一直在说OpenTelemetry日志的特点是可以和其他数据进行更好的关联,那么关联的方式是什么呢?

OpenTelemetry为日志提供了如下的集中关联方式:

  1. 时间维度:这个是最基础的关联方式,TraceMetricsLog都能够记录发生的时刻或者是时间范围,因此可以从时间的维度直接进行关联。
  2. 请求上下文:OpenTelemetry可以在LogRecord中包含TraceIdSpanId,同样的Trace也是一样,并且这些信息是可以通过上下文进行传递的,凭借此信息,日志就能够互相进行串联,并且也可以和Trace一起进行整合。
  3. 资源上下文:即在LogRecord中包含Resource的信息,以此来与其他数据关联。

Event

event也是一种特殊的日志,他的使用我们在前面的OpenTelemetry系列中有介绍过,就不在此赘述了。

OpenTelemetry Log的采集

OpenTelemetry Collector支持对于OpenTelemetry日志的采集和处理。

  • 目前的collector支持otlp协议的push式日志传输,但是此方式的问题在于当日志的量极其的大的时候会影响客户端服务的性能,并且对于collector本身的性能也是一个极大的挑战。

  • 除此之外collector也支持从日志文件pull的方式来自行获取数据。目前支持日志文件的读取,日志格式的解析等等,在collector中进行类似如下配置即可开启:

receivers:
  filelog:
    include: [ /var/log/myservice/*.json ]
    operators:
      - type: json_parser
        timestamp:
          parse_from: attributes.time
          layout: '%Y-%m-%d %H:%M:%S'
复制代码
  • 目前collector对于fluent forward方式有额外的支持,配置监听的端点即可直接以此方式采集数据。

如果是使用的pull模式,TraceIdSpanId等信息需要你自行在日志文件中进行输出,并且在采集后进行解析,不然日志就没办法和Trace等进行关联。

总结

在当前OpenTelemetry的日志体系可以说是已经初步完成并且接近于GA了,但是从个人的观感上来说距离生产可用还是有一定的距离的。

首先目前广泛使用的日志采集器FilebeatLogstash本质上来说和OpenTelemetry Collector是二者取其一的关系,如果要完整启用OpenTelemetry日志体系,需要使用OpenTelemetry Collector来替换掉FilebeatLogstash。这对于绝大多数的公司来说是一个极其艰难的过程,抛弃掉一个完善的体系来使用一个刚刚1.0的应用不是一件很容易的事情。

其次OpenTelemetry Collector的性能未必能有一定的保证。相对于久经考验的FilebeatLogstashOpenTelemetry Collector还很年轻,尽管他在Trace的采集上已经有过证明,但是日志的处理上还不太能给人信心。

其三由于OpenTelemetry体系会将TraceMetricsLog进行关联,因此其数据的存储也是需要考量的问题。一般来说使用Elasticsearch是能够兼容所有的完美策略,但是面对其巨大的数据量以及不同数据格式的处理时,需要仔细思考这样的存储体系是不是一定是最佳的方案。

总的来说从功能侧OpenTelemetry日志体系已经是一个较为完善的状态了,但是他在生产环境的运用到底如何还暂时需要打个问号。我们期待他的不断迭代,以及先行者在生产环境的使用结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联合证券|新年再现“A吃A” 建发股份拟控股美凯龙

2022年,A股上市公司之间的并购超越10起。2023年伊始,上市公司“A吃A”或将再添新事例。 建发股份(600153)1月8日晚公告,公司正在谋划经过现金方法协议收购红星美凯龙控股集团有限公司(以下简称“红星控股”)持有的美凯…

导致 MySQL 索引失效

1、索引失效情况1:非最左匹配 最左匹配原则指的是,以最左边的为起点字段查询可以使用联合索引,否则将不能使用联合索引。 我们本文的联合索引的字段顺序是 sn name age,我们假设它们的顺序是 A B C,以下联合索引的…

YOLOv8来啦 | 详细解读YOLOv8的改进模块!YOLOv5官方出品YOLOv8!

YOLOv8是Ultralytics开发的 YOLO(You Only Look Once)物体检测和图像分割模型的最新版本,详细介绍可以参考Ultralytics发布的网址,可以通过ultralytics python 包获取代码,暂时还没有官方公布代码 安装ultralytics py…

再见,Python 循环,向量化已超神

使用向量化 -- Python中循环的超级快速替代品 我们在几乎所有的编程语言中都学习过循环。所以,默认情况下,只要有重复性的操作,我们就会开始实施循环。但是当我们处理大量的迭代(数百万/数十亿行)时,使用循…

啊哈哈哈,2023年Python学习清单来喽;这清单都上齐了,怎么不收藏啊

不知不觉已经在CSDN写了三百多篇博客,这些博客中,Python相关的内容占了绝大多数,而这些与Python有关的内容中,绝大多数又都是我个人学习的总结,本文希望把我的Python学习过程做一个总结,也希望能够帮助不同…

【Java】阻塞队列

【Java】阻塞队列 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这2个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到…

4.3 集成运放电路简介

从本质上看,集成运放是一种高性能的直接耦合放大电路。尽管品种繁多,内部结构也各不相同,但是它们的基本组成部分、结构形式和组成原则基本一致。因此,对于典型电路的分析具有普遍意义,一方面可以从中理解集成运放的性…

MapGIS用投影变换功能绘制多条测线

1 问题的提出 在做测线设计的时候,经常要在MapGIS里投点,投线。投点可以用section自带功能实现,但投线还是另有讲究的。可以用MapGIS自带的投影变换功能来实现。 先看下我已知线在奥维地图里是什么样的。 下面就来对这些线,进行投影变换,生成wl线文件,从而可以放入设计…

1. 【prometheus 学习】架构Architecture

prometheus是开源的系统监控及告警系统,很多企业、互联网公司应用prometheus,搭配可视化的grafana,实现对系统的全面度量。 prometheus应用的场景: 1)对于数据准确率要求不高,可以粗略反映监控数据走势的场…

前端实战:Vue实现数据导出导入案例

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️荣誉: CSDN博客专家、数据库优质创作者🏆&…

linux内核调度浅析

目录 进程控制块PCB 就绪队列结构体 调度队列成员 下一个进程的选择 进程切换 加入就绪队列 linux进程调度相关的知识再重新梳理一遍。抽取主要数据结构中的主要成员,以最简单的方式实现进程调度。 进程控制块PCB task_struct /* 进程PCB */ struct task_s…

人脸识别速度超高识别度超高项目,可实时进行检测,一看就会!

1.本项目属于pytorch-facenet项目,核心代码是facenet算法,经过1周的代码修改,可以进行入库和识别的连续操作,经过测试,识别效果很好,在GPU环境中可以进行实时摄像头的识别,同时项目将放在百度网…

知行之桥传输带附件的文件示例

在大多数的项目中,交易伙伴往往只要求传输报文消息,业务数据经由报文内容来进行传输。但有些交易伙伴也会要求传输带附件的文件,比如在与大众和延锋汽车YFAI对接的项目当中,交易伙伴要求传输VDA4951 ENGDAT报文,该业务…

vue3 销毁组件方法

问题描述:使用elementplus的dialog,当关闭弹窗后不刷新页面,直接再次打开发现弹窗中还存留上一次的数据。尝试定义关闭事件,或者使用api中提供的属性destroy-on-close 都不行。后来发现这是一个误区。弹窗关闭时并不代表这个组件已经被销毁了…

Linux测试主机之间连通性和端口是否开放的方法

文章目录测试主机之间的连通性测试端口是否开放(curl)测试端口是否开放(wget)测试端口是否开放(ssh)下面每一种测试方式都给出了成功通信的截图,如果与截图不相符可以根据你控制台的报错调试。测试主机之间的连通性 测试两个主机之间是否可以通信,通常使…

Odoo 16 企业版手册 - 库存管理之规则与路线

规则和路线 产品上定义的路线将帮助您理解和跟踪产品的每一次调拨。它是用于库存调拨的操作规则或路线。没有适当的策略,就很难监控和管理公司的库存变动。根据您的公司政策,您可以设置某些操作规则来定义库存中的产品调拨。使用这些规则,Odo…

何为 Vue3 组件标注 TS 类型,看这篇文章就够了!

文章目录前言一、为 props 标注类型使用 < script setup >非 < script setup >二、为 emits 标注类型使用 < script setup >非 < script setup >三、为 ref() 标注类型默认推导类型通过接口指定类型通过泛型指定类型四、为 reactive() 标注类型默认推导…

什么真无线蓝牙耳机值得入手?蓝牙耳机全方位挑选攻略

从我们的日常生活中可以看到&#xff0c;蓝牙耳机的使用频率真的是越来越高了&#xff0c;这主要得益于蓝牙耳机的使用便捷性以及近几年的快速发展。很多人在选择时不禁有些疑问&#xff0c;不知道哪款真无线蓝牙耳机值得入手&#xff1f; 都说买新不买旧&#xff0c;所以&…

黑马2022新版SSM框架教程(SpringMVC_day01)

SpringMVC_day01 文章目录SpringMVC_day011&#xff0c;SpringMVC简介1.1 SpringMVC概述2&#xff0c;SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目&#xff0c;并导入对应的jar包步骤2:创建控制器类步骤3:创建配置类步骤4:创建Tomcat的Servlet容器配置类步骤…

网上流行短视频运营方法验证和试错,这些坑你踩过吗?

网上流行短视频运营方法验证和试错,这些坑你踩过吗&#xff1f; 人到中年&#xff0c;35岁以后找份工作不容易&#xff0c;这不刚刚有了一份短视频运营的工作。 在网上找了一些短视频运营技巧&#xff0c;看网上的评论有说有用的有说没用的。 只好自己去试一下错了&#xff…