作者简介:大家好,我是蓝胖子

️博客首页:博客园主页蓝胖子的编程梦

每日一句:人生的烦恼,多在于明白的太多,而做的太少

大家好,我是蓝胖子,随着微服务的流行,服务的可观测性概念被越来越多人提及到,究竟什么是可观测性?我们应该如何构建服务的可观测性?我将会在这篇文章中逐步提及到,并对和可观测性相关的工具 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 KubernetesOpenTelemetry Helm Charts, and community assets for FaaS

Opentelemetry 开维护了一个系统 library ecosystem 查找用于使用和扩展 OpenTelemetry 的库、插件、集成和其他有用工具。我们可以在上面查找到想要的组件并且查看到其用法。

【可观测性系列】 Opentelemetry 介绍的更多相关文章

  1. FrameBuffer系列 之 介绍

    1.     来由 FrameBuffer是出现在2.2.xx内核当中的一种驱动程序接口.Linux工作在保护模式下,所以用户态进程是无法象 DOS 那样使用显卡 BIOS里提供的中断调用来实现直接写 ...

  2. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  3. openssl之EVP系列之13---EVP_Open系列函数介绍

    openssl之EVP系列之13---EVP_Open系列函数介绍     ---依据openssl doc/crypto/EVP_OpenInit.pod翻译和自己的理解写成     (作者:Dra ...

  4. Intel 5 6 7 8系列芯片组介绍

    Intel 5 6 7 8系列芯片组介绍 Iknow.2015-11-05 22:40|知识编号:122257 操作步骤: [Inetl 5.6.7.8系列芯片组介绍] 芯片组是主板电路的核心.一定意 ...

  5. openssl之EVP系列之12---EVP_Seal系列函数介绍

    openssl之EVP系列之12---EVP_Seal系列函数介绍     ---依据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成     (作者:Dra ...

  6. openssl之EVP系列之11---EVP_Verify系列函数介绍

    openssl之EVP系列之11---EVP_Verify系列函数介绍     ---依据openssl doc/crypto/EVP_VerifyInit.pod翻译和自己的理解写成     (作者 ...

  7. openssl之EVP系列之10---EVP_Sign系列函数介绍

    openssl之EVP系列之10---EVP_Sign系列函数介绍     ---依据openssl doc/crypto/EVP_SignInit.pod翻译     (作者:DragonKing, ...

  8. faster-rcnn系列原理介绍及概念讲解

    faster-rcnn系列原理介绍及概念讲解 faster-rcnn系列原理介绍及概念讲解2 转:作者:马塔 链接:https://www.zhihu.com/question/42205480/an ...

  9. openresty开发系列12--lua介绍及常用数据类型简介

    openresty开发系列12--lua介绍及常用数据类型简介 lua介绍  1993 年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de ...

  10. 物体的三维识别与6D位姿估计:PPF系列论文介绍(三)

    作者:仲夏夜之星 Date:2020-04-08 来源:物体的三维识别与6D位姿估计:PPF系列论文介绍(三) 文章“A Method for 6D Pose Estimation of Free-F ...

随机推荐

  1. 分布式搜索引擎 Elasticsearch 的架构分析

    一.写在前面 ES(Elasticsearch下文统一称为ES)越来越多的企业在业务场景是使用ES存储自己的非结构化数据,例如电商业务实现商品站内搜索,数据指标分析,日志分析等,ES作为传统关系型数据 ...

  2. 加密原理详解:对称式加密VS非对称式加密

    一.前言 在了解加密原理前,我们来看看这样一个故事. 小红和小明是情侣,一天,小红给小明发短信说:"亲爱的,我银行卡上没有钱了,你给我转1万块吧."有过上当受骗经历的人都知道这有可 ...

  3. 打包报错,提示UglifyJs Unexpected token: keyword «const»

    https://blog.csdn.net/weixin_43473561/article/details/102816018 原因:ugluifyjs当前版本不符合项目预期(可能不能解析es6) 解 ...

  4. C# 开发桌面应用简单介绍

    一. C#使用场景介绍 C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言.运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言. 二. 开发 ...

  5. php开发之文件下载的实现

    前言 php是网络安全学习里必不可少的一环,简单理解php的开发环节能更好的帮助我们去学习php以及其他语言的web漏洞原理 正文 在正常的开发中,文件下载的功能是必不可少,比如我们在论坛看到好看图片 ...

  6. 【MicroPython】用 c 添加接口 -- 给 module 添加 function

    [来源]https://www.eemaker.com/micropython-c-modfunc.html

  7. Laravel - 使用查询构造器查询

    public function constructorQuery()     {         # 1,新增         DB::table('student')->insert([    ...

  8. [转帖]MySQL 8.2.0 GA

    https://cloud.tencent.com/developer/article/2353798 MySQL新的进化版8.2.0于2023年10月25日发行,让我们一起快速浏览一下该版本发生哪些 ...

  9. Redis和Springboot在Windows上面设置开机启动的方法

    Redis和Springboot在Windows上面设置开机启动的方法 背景 同事遇到一个问题 Windows 晚上自动更新服务 然后第二天 Springboot开发的程序没有启动起来. 所以基于此想 ...

  10. [转帖]Linux文件权限除了r、w、x外还有s、t、i、a权限

    https://www.cnblogs.com/hiyang/p/15122714.html setuid 是 set user ID upon execution 再次缩写为suid setgid  ...