【可观测性系列】 Opentelemetry 介绍
作者简介:大家好,我是蓝胖子
️博客首页:博客园主页蓝胖子的编程梦
每日一句:人生的烦恼,多在于明白的太多,而做的太少
大家好,我是蓝胖子,随着微服务的流行,服务的可观测性概念被越来越多人提及到,究竟什么是可观测性?我们应该如何构建服务的可观测性?我将会在这篇文章中逐步提及到,并对和可观测性相关的工具 Opentelemetry做一个大致的介绍。
可观测性指的是什么
首先,我们来看看什么是可观测性。
传统的服务监控是资源维度的监控,通常是对cpu,内存,磁盘io这些硬件资源做的监控,但是这种维度的监控往往是结果导向的,也就是由于线上bug才导致这些硬件指标异常,我们从这些异常指标中被动发现问题。这样导致,不容易定位到发生bug的根本原因。
而可观测性的理念则要求不仅要发现问题,还要发现问题的根本原因。讲究从应用维度去做监控设计,上到用户体验,下到基础设施都被囊括进了监控的范畴。
通过日志,指标,链路追踪技术,构建服务的监控体系,覆盖上到用户体验,下到基础设施的监控内容,并将它们相互联系起来,这样当问题发生时,从这些监控内容中寻找联系从而定位到发生问题的根本原因就是可观测性要做的事情,可观测性就是一种理念。
通常很多时候我们也会说APM(应用服务性能监控),我认为可观测性是对APM中的相关概念和理念的延升。
最初始的APM则脱离于原始的传统服务监控,讲究从应用维度建立监控体系,并将日志,指标,链路追踪技术在应用层互相结合起来建立监控体系,如今提到的APM系统则和可观测性基本一致了,上到用户体验,下到基础设施都被囊括监进了监控的范畴,不仅仅体现在对应用层的监控。
Opentelemetry是什么
在了解了可观测性是什么后,我们来看看一个比较火热的开源工具 Opentelemetry,从上面可以知道,构建可观测性监控体系的时候,通常是通过日志,指标,链路追踪技术,这3个技术可以说是构建服务可观测性的3大基石。
日志数据,指标数据,链路追踪数据也被称为遥测数据(telemetry data)。
但最开始开发者在将这3个手段融入到项目中时没有统一的标准,Opentelemetry 则是为了统一创建和管理这些遥测数据(例如 日志数据,指标数据,链路追踪数据 )而产生的。
Opentelemetry 规范了客户端在创建和使用遥测数据的规范,并且Opentelemetry是和具体的监控组件是无关的,你可以将Opentelemetry的链路追踪数据导入jaeger或者其他链路追踪系统比如skywalking。
也就是说,Opentelemetry只负责创建和管理,导出遥测数据,但是遥测数据的存储和可视化需要其他开源或商业软件去完成。
Opentelemetry 的组成
在了解了Opentelemetry 是什么后,我们来看看Opentelemetry项目包含哪些组件。
Opentelemetry不是一个软件,是一个构建可观测性的工具集。
所以它提供了各种语言的客户端SDK,客户端SDK拥有统一的生成和导出遥测数据的逻辑,所以用上SDK就拥有统一的标准。
同时,Opentelemetry还提供了一个Opentelemetry Collector的代理软件,它能将发往jaeger或者prometheus或者其他的开源组件的遥测数据,预先经过Opentelemetry Collector处理后再发送到对端。Opentelemetry Collector对遥测数据提供了强大的预处理遥测数据的功能。比如jaeger对链路追踪数据只有前置采样功能,但我们能通过Opentelemetry Collector实现对链路追踪的后置采样。
除此以外,在Opentelemetry 项目中,还提供了自动化注入监控功能的机制,例如java的客户端SDK已经有成熟的探针机制,在golang方面,社区正在开发使用ebpf技术来实现golang服务的自动化能力。
另外,Opentelemetry项目中还包含了其他工具项目,比如OpenTelemetry Operator for Kubernetes, OpenTelemetry Helm Charts, and community assets for FaaS 。
Opentelemetry 开维护了一个系统 library ecosystem 查找用于使用和扩展 OpenTelemetry 的库、插件、集成和其他有用工具。我们可以在上面查找到想要的组件并且查看到其用法。
【可观测性系列】 Opentelemetry 介绍的更多相关文章
- FrameBuffer系列 之 介绍
1. 来由 FrameBuffer是出现在2.2.xx内核当中的一种驱动程序接口.Linux工作在保护模式下,所以用户态进程是无法象 DOS 那样使用显卡 BIOS里提供的中断调用来实现直接写 ...
- windows下mongodb基础玩法系列一介绍与安装
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
- openssl之EVP系列之13---EVP_Open系列函数介绍
openssl之EVP系列之13---EVP_Open系列函数介绍 ---依据openssl doc/crypto/EVP_OpenInit.pod翻译和自己的理解写成 (作者:Dra ...
- Intel 5 6 7 8系列芯片组介绍
Intel 5 6 7 8系列芯片组介绍 Iknow.2015-11-05 22:40|知识编号:122257 操作步骤: [Inetl 5.6.7.8系列芯片组介绍] 芯片组是主板电路的核心.一定意 ...
- openssl之EVP系列之12---EVP_Seal系列函数介绍
openssl之EVP系列之12---EVP_Seal系列函数介绍 ---依据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成 (作者:Dra ...
- openssl之EVP系列之11---EVP_Verify系列函数介绍
openssl之EVP系列之11---EVP_Verify系列函数介绍 ---依据openssl doc/crypto/EVP_VerifyInit.pod翻译和自己的理解写成 (作者 ...
- openssl之EVP系列之10---EVP_Sign系列函数介绍
openssl之EVP系列之10---EVP_Sign系列函数介绍 ---依据openssl doc/crypto/EVP_SignInit.pod翻译 (作者:DragonKing, ...
- faster-rcnn系列原理介绍及概念讲解
faster-rcnn系列原理介绍及概念讲解 faster-rcnn系列原理介绍及概念讲解2 转:作者:马塔 链接:https://www.zhihu.com/question/42205480/an ...
- openresty开发系列12--lua介绍及常用数据类型简介
openresty开发系列12--lua介绍及常用数据类型简介 lua介绍 1993 年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de ...
- 物体的三维识别与6D位姿估计:PPF系列论文介绍(三)
作者:仲夏夜之星 Date:2020-04-08 来源:物体的三维识别与6D位姿估计:PPF系列论文介绍(三) 文章“A Method for 6D Pose Estimation of Free-F ...
随机推荐
- HDU - 2897 邂逅明下 (简单博弈)
题目链接: https://vjudge.net/problem/HDU-2897 题目大意: 就是现在一堆石子有n颗, 每次只能拿走p~q颗, 当剩余少于p颗的时候必须一次拿完 拿走最后一颗的人败 ...
- [kuangbin] 专题13 基础计算几何 题解 + 总结
kuangbin带你飞:点击进入新世界 [kuangbin] 专题7 线段树 题解 + 总结:https://www.cnblogs.com/RioTian/p/13413897.html kuang ...
- 你折腾一天都装不上的插件,函数计算部署 Stable Diffusion 都内置了
在进行函数计算 Stable Diffusion 答疑的过程中,遇到很多同学在装一些插件的过程中遇到了难题,有一些需要安装一些依赖,有一些需要写一些代码,很多时候安装一个插件就能折腾几天,我们收集了很 ...
- Invalid options object. Sass Loader has been initialized using an options obj
https://blog.csdn.net/liwan09/article/details/106981239
- 何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理.Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求.本文将比较 ...
- python之configparser类的使用
一.定义配置文件格式如下:data.conf [interface] url=http://192.168.37.8:7777/api/mytest2 [switch] switch_car=on [ ...
- java进阶(11)--Arrays工具类
一.工具类介绍: 一般都为static静态方法,可直接调用 二.常用方法: 1.Array.toString() 2.Array.sort() 3.Arrays.binarySearch(),需 ...
- LLM面面观之Prefix LM vs Causal LM
1. 背景 关于Prefix LM和Causal LM的区别,本qiang在网上逛了一翻,发现多数客官只给出了结论,但对于懵懵的本qiang,结果仍是懵懵... 因此,消遣了多半天,从原理及出处,交出 ...
- 查看正在运行容器的环境变量-寻找容器运行mysql的root密码
查看正在运行容器的环境变量-寻找容器运行mysql的root密码 背景 有一个服务器上面运行着一个长达两年的mysql数据库实例. 因为当时root密码是通过环境变量注入进去的. 现在我想重新连接一下 ...
- [转帖]TiDB 数据库的调度
https://docs.pingcap.com/zh/tidb/stable/tidb-scheduling#%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86 PD (Pla ...