OpenTelemetry系列 - 第1篇 相关概念

news2025/2/27 4:49:03

目录

    • 一、背景
    • 二、概念
      • 2.1 Traces & Span
      • 2.2 Metrics
      • 2.3 Logs
      • 2.4 Baggage
      • 2.5 OTel
      • 2.6 OTLP
      • 2.7 Resources
      • 2.8 Instrumentation Scope
      • 2.9 Sampling
    • 三、核心组件

一、背景

OpenTelemetry是一个可观察性框架和工具包,旨在创建和管理遥测数据,如跟踪、指标和日志。至关重要的是,OpenTelemetry与供应商工具无关,这意味着它可以与各种各样的可观察性后端一起使用,包括Jaeger和Prometheus等开源工具,以及商业产品。OpenTelemetry是一个云原生计算基金会(CNCF)项目。

随着云计算、微服务架构和越来越复杂的业务需求的兴起,对可观察性的需求从未如此之大。可观察性是通过检查系统的输出来了解系统内部状态的能力。在软件的上下文中,这意味着能够通过检查遥测数据(包括跟踪、度量和日志)来了解系统的内部状态。

为了使一个系统可观察,它必须被检测。也就是说,代码必须发出跟踪、监控指标和日志。然后,测量的数据必须被发送到可观察性后端。

OpenTelemetry做了两件重要的事情:

  • 允许您拥有自己生成的数据,而不是被专有的数据格式或工具所困。
  • 允许你学习一套api和约定

这两者的结合使团队和组织在当今的现代计算世界中具有所需的灵活性。

OpenTelemetry是之前两个项目OpenTracing和OpenCensus合并的结果。这两个项目都是为了解决同一个问题而创建的:缺乏如何检测代码并将遥测数据发送到可观察性后端的标准。然而,两个项目都不能完全独立解决这个问题,所以两个项目合并形成OpenTelemetry,这样它们就可以结合各自的优势,真正提供一个统一的标准。

项目维度
OpenTracingtraces
OpenCensustraces, metrics
OpenTelemetrytraces, metrics, logs

OpenTelemetry不是一个像Jaeger、Prometheus或商业供应商那样的可观察性后端。OpenTelemetry专注于遥测数据的生成、收集、管理导出。数据的存储和可视化有意留给其他工具。

二、概念

2.1 Traces & Span

trace由一个或多个span组成。第一个span表示root span。每个root span代表一个从开始到结束的请求。
父级下面的span提供了请求期间发生的事情(或者组成请求的步骤)的更深入的上下文。
在这里插入图片描述

  • Tracer - trace由一个或多个span组成,表示一条完整的追踪链路,由traceId唯一标识。
  • Context Propagation
    • Context: trace_id, span_id, trace Flags, Trace State
    • Propagation
  • Span - 工作单元、操作 - 时间跨度(一段时间,起始时间)
    • Name
    • Parent span ID (empty for root spans)
    • Start and End Timestamps
    • Span Context - 跨Span关联关系
    • Attributes: key-value pairs, contain metadata - Span携带的信息,如下单span携带Attrs: userId, itemId, cartId…
      • key/value non-null,
      • key: string
      • value: string, boolean float, integer, or array of these values
      • 语义Attr(系统保留的通用属性):Semantic Attributes
    • Span Events - 时间点上的事件信息(记录日志)
    • Span Links
    • Span Status
      • Unset
      • OK
      • Error
    • Span Kind
      • Client/Server - 同步调用
      • Producer/Consumer - 异步队列、消息队列
      • Internal - 不跨进程的操作(内部处理)

2.2 Metrics

metric是对运行时捕获的服务的measurement度量。捕获测量数据measurement的时刻称为度量事件(metrics event),它不仅包括测量数据本身,还包括捕获测量数据的时间和相关的元数据。应用程序和请求度量是可用性和性能的重要指标。自定义指标可以洞察可用性指标如何影响用户体验或业务。收集到的数据可用于警报中断触发调度决策,以在高需求时自动扩展部署。

metric

  • 名称
  • 元数据(label或attr)
  • 测量数据measurement(如float 64)
  • 时间

Meter & Metric Instruments

  • Name
  • Kind
    • Counter - 累加计数
    • Asynchronous Counter - 异步计数
    • UpDownCounter - 升降计数器
    • Asynchoronous UpDownCounter - 异步升降计数器
    • Gauge - 实时数值(仪表)计数器
    • Histogram - 直方图,客户端聚合统计,例如请求延迟
  • Unit (optional)
  • Description (optional)
  • Views - 自定义指标输出、忽略、聚合、属性

聚合Aggregation
一段时间内分散于不同时间点的多个指标 ==>汇聚成==> 一个描述该时间段内的统计结果的指标

2.3 Logs

带有时间戳的信息,可内嵌到span或trace中,支持结构化(推荐)、非结构化,带有metadata。

对于traces和metrics,OpenTelemetry采用全新的设计方法,指定一个新的API,并在多个语言sdk中提供该API的完整实现。
OpenTelemetry处理日志的方法是不同的。因为现有的日志解决方案在语言和操作生态系统中广泛存在,OpenTelemetry充当了这些logs、tracing和metrics信号以及其他OpenTelemetry组件之间的“bridge”。事实上,由于这个原因,日志API被称为Logs Bridge API

  • Log Appender / Bridge
  • Logger Provider(日志框架作者需关注)
  • Logger(日志框架作者需关注)
  • Log Record Exporter
  • Log Record

日志记录表示对事件的记录。在OpenTelemetry中,日志记录包含两种字段:

  • 指定类型和含义的命名top-level字段
  • Resource和attributes任意值和类型的字段

top-level字段包括:

Field NameDescription
TimestampTime when the event occurred.
ObservedTimestampTime when the event was observed.
TraceIdRequest trace ID.
SpanIdRequest span ID.
TraceFlagsW3C trace flag.
SeverityTextThe severity text (also known as log level).
SeverityNumberNumerical value of the severity.
BodyThe body of the log record.
ResourceDescribes the source of the log.
InstrumentationScopeDescribes the scope that emitted the log.
AttributesAdditional information about the event.

2.4 Baggage

在OpenTelemetry中,Baggage是在span之间传递的上下文信息。它是一个与跟踪中的span上下文一起存在的键值存储,使得在跟踪中创建的任何span都可以访问值。
在这里插入图片描述

2.5 OTel

OpenTelemetry的缩写,OpenTelemetry的规范可参见:
https://opentelemetry.io/docs/specs/otel/

2.6 OTLP

The OpenTelemetry Protocol(OTLP)规范描述了遥测数据源、中间节点(如采集器和遥测后端)之间遥测数据的编码、传输和传递机制。OTLP是OpenTelemetry项目范围内设计的通用遥测数据传输协议。

OTLP定义了遥测数据的编码和用于在客户机和服务器之间交换数据的协议,该规范定义了如何在gRPCHTTP 1.1上实现OTLP传输,并规定了用于消息负载的Protocol Buffers schema定义。OTLP是一种请求/响应风格的协议:客户端发送请求,服务器用相应的响应进行应答。

OTLP协议可参见:
https://opentelemetry.io/docs/specs/otlp/

2.7 Resources

通过resource attrs表示产生telemetry的实体(如主机、Pod、Container等信息)

env OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production yourApp

2.8 Instrumentation Scope

插桩范围,即监控的代码范围,如请求URI、类名::方法名、框架名等。
在这里插入图片描述

2.9 Sampling

采样状态:

  • Sampled - 已采样
  • Not Sampled - 未采样

分类:

  • Head Sampling - 头部抽样是一种用于尽早做出抽样决策的抽样技术。抽样或删除跨度或跟踪的决定不是通过整体检查跟踪来做出的。例如consistent-probability-sampling基于概率的采样。

  • Tail Sampling - 尾部抽样是通过考虑跟踪中的全部或大部分跨度来决定对跟踪进行抽样的地方。尾部采样为您提供了基于从跟踪的不同部分派生的特定标准对跟踪进行采样的选项,这不是头部采样的选项。

如何使用Tail Sampling的一些例子包括:

  • 总是采样包含错误的跟踪
  • 基于总体延迟的采样跟踪
  • 根据迹线中一个或多个跨度上特定属性的存在或值对迹线进行采样;例如,对来自新部署的服务的更多跟踪进行采样
  • 根据一定的标准对迹线应用不同的采样率

Collector支持的采样处理器:

  • Probabilistic Sampling Processor
  • Tail Sampling Processor

三、核心组件

  • OTel规范
  • OTLP协议
  • Language SDKs - 支持不同语言的客户端实现
  • Library Ecosystem - 支持不同lib、框架的库生态系统
  • 自动Instrumentation组件 - 无需修改代码
  • Collector - 接收、处理、导出遥测数据的代理
  • 其他工具
    • OpenTelemetry Operator for Kubernetes
    • OpenTelemetry Helm Charts
    • community assets for FaaS
  • 40+ Vendors
    • Grafana Labs
    • Apache Skywalking
    • Jaeger
OrganizationOSSCom­mer­cialDistri­butionNative OTLPLearn more
Apache SkyWalkingYesNoNo Yes https://skywalking.apache.org/docs/main/v9.0.0/en/setup/backend/opentelemetry-receiver/
Fluent BitYesNoNo Yes https://docs.fluentbit.io/manual/pipeline/inputs/opentelemetry/
JaegerYesNoNo Yes https://www.jaegertracing.io/docs/1.47/getting-started/
TeletraceYesNoYes Yes https://docs.teletrace.io/
ClickHouseYesYesNo No https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/clickhouseexporter
Grafana LabsYesYesYes Yes https://grafana.com/oss/opentelemetry/
GreptimeDBYesYesYes Yes https://docs.greptime.com/user-guide/clients/otlp
HighlightYesYesYes Yes https://www.highlight.io/docs/general/company/open-source/contributing/adding-an-sdk/
observIQYesYesYes Yes https://docs.bindplane.observiq.com
qrynYesYesYes Yes https://qryn.metrico.in/#/support?id=tempo-api
SigNozYesYesYes Yes https://signoz.io
AppDynamics (Cisco)NoYesYes Yes https://docs.appdynamics.com/latest/en/application-monitoring/appdynamics-for-opentelemetry
Aria by VMware (Wavefront)NoYesNo Yes https://docs.wavefront.com/opentelemetry_tracing.html
AspectoNoYesYes Yes https://www.aspecto.io
AWSNoYesYes No https://aws-otel.github.io
AzureNoYesYes No https://docs.microsoft.com/azure/azure-monitor/app/opentelemetry-overview
CoralogixNoYesYes Yes https://coralogix.com/docs/opentelemetry/
CriblNoYesNo Yes https://docs.cribl.io/stream/sources-otel
DaoCloudNoYesYes Yes https://docs.daocloud.io/en/insight/06UserGuide/01quickstart/otel/otel/
DatadogNoYesYes Yes https://docs.datadoghq.com/tracing/setup_overview/open_standards
DynatraceNoYesYes Yes https://www.dynatrace.com/support/help/how-to-use-dynatrace/transactions-and-services/service-monitoring-settings/opentelemetry/
ElasticNoYesYes Yes https://www.elastic.co/guide/en/apm/get-started/current/open-telemetry-elastic.html
F5NoYesNo Yes https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/f5cloudexporter
Google Cloud PlatformNoYesNo Yes https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/googlecloudexporter
HeliosNoYesYes Yes https://gethelios.dev/
HoneycombNoYesYes Yes https://docs.honeycomb.io/getting-data-in/
InstanaNoYesNo Yes https://www.ibm.com/docs/en/obi/current?topic=apis-opentelemetry
ITRSNoYesYes Yes https://docs.itrsgroup.com/docs/geneos/data-collection/opentelemetry/current/opentelemetry.html
KloudFuseNoYesNo Yes https://kloudfuse.atlassian.net/wiki/spaces/EX/pages/753860609/APM#Sending-traces-to-Kloudfuse-data-plane%3A
KloudMateNoYesNo Yes https://docs.kloudmate.com/using-opentelemetry-collector
LogicMonitorNoYesYes Yes https://www.logicmonitor.com/support/tracing/getting-started-with-tracing
LogScale by Crowdstrike (Humio)NoYesNo Yes https://library.humio.com/falcon-logscale/log-shippers-opentelemetry.html
Logz.ioNoYesYes No https://docs.logz.io/shipping/tracing-sources/opentelemetry.html#overview
LumigoNoYesYes Yes https://docs.lumigo.io/docs/opentelemetry
New RelicNoYesNo Yes https://newrelic.com/solutions/opentelemetry
Observe, Inc.NoYesYes Yes https://docs.observeinc.com/en/latest/content/integrations/otel/opentelemetry.html
ObserveAnyNoYesNo Yes https://www.observeany.com/learn/opentelemetry-receiver
OracleNoYesNo Yes https://docs.oracle.com/en-us/iaas/application-performance-monitoring/doc/configure-open-source-tracing-systems.html#GUID-4D941163-F357-4839-8B06-688876D4C61F
SentryNoYesYes No https://sentry.io/for/opentelemetry/
Sentry SoftwareNoYesYes Yes https://www.sentrysoftware.com/products/hardware-sentry-opentelemetry-collector.html
ServiceNow Cloud Observability (Lightstep)NoYesYes Yes https://github.com/lightstep?q=launcher
ServicePilotNoYesNo Yes https://www.servicepilot.com/en/doc/apm#opentelemetry
SolarWindsNoYesYes Yes https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=third-otel-integration
SplunkNoYesYes Yes https://docs.splunk.com/Observability/gdi/opentelemetry/opentelemetry.html
Sumo LogicNoYesYes Yes https://help.sumologic.com/docs/send-data/opentelemetry-collector/
TelemetryHubNoYesNo Yes https://app.telemetryhub.com/docs
TingYunNoYesNo Yes https://wukongdoc.tingyun.com/apm/userguide/deploy_manage/opentelemetry.html
TraceloopNoYesNo Yes https://www.traceloop.com
UptraceNoYesYes Yes https://uptrace.dev

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

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

相关文章

运维 | 关于IP网络相关的概念和原理

关注:CodingTechWork IP地址 IP介绍 概述 IP是TCP/IP协议族的核心,IP地址是电脑在网络中的唯一标识,全球唯一(G公网IP)。IP地址(Internet Protocol Address)是互联网协议地址,也…

LabVIEW在不同操作系统上使VI、可执行文件或安装程序

LabVIEW在不同操作系统上使VI、可执行文件或安装程序 LabVIEW可以在多个操作系统上运行,主要支持以下几种操作系统: Windows: LabVIEW在各个版本的Windows操作系统上都能运行,包括Windows 7、Windows 8和Windows10。LabVIEW为Wi…

【数据中台】开源项目(5)-Amoro

介绍 Amoro is a Lakehouse management system built on open data lake formats. Working with compute engines including Flink, Spark, and Trino, Amoro brings pluggable and self-managed features for Lakehouse to provide out-of-the-box data warehouse experience,…

海外之路,英语相助:我的雅思考试之旅(成功以此申请到了港科大硕士)

文章目录 背景注册过程 雅思考试之旅全程记录2023年2月14日 - 报名补充2023年2月15日 - 模拟考试2023年2月16日 - 在线考试失利2023年2月20日 - 线下考试再战成功2023年2月23日 - 成绩出来了 考试经验寄送成绩问题请求额外的IELTS成绩寄送 结语 背景 在新加坡Shopee工作了两年…

【面试经典 150 | 二分查找】搜索插入位置

文章目录 写在前面Tag题目来源题目解读解题思路方法一:二分查找闭区间左闭右开区间开区间总结 知识总结写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主&#xff0c…

【Python 训练营】N_14 文件查找和替换

题目 新建一个test3.txt文件,内容如下图,然后从中查找字符串’five’,并统计出现的次数;替换其中的’five’字符串为’python’。 分析 类似Excel中的查找和替换,查找相应内容需用到正则,还考察文件打开、…

持续集成交付CICD:CentOS 7 安装 Sonarqube9.6

目录 一、实验 1.CentOS 7 安装 Sonarqube9.6 二、问题 1.安装postgresql13服务端报错 2.postgresql13创建用户报错 一、实验 1.CentOS 7 安装 Sonarqube9.6 (1)下载软件及依赖包 ①Sonarqube9.6下载地址 https://binaries.sonarsource.com/Dis…

欧洲各国及发达国家经济支柱和第一出口商品是什么

工业在欧洲各国经济支柱中的表现 一般发达国家,像西欧的国家第三产业即服务业占GDP70%甚至更高,从业人数比重也最大,只是越发达的国家服务业的知识性和科技含量会更高,如商业咨询、律师、医疗卫生、科技服务、商业服务。服务业的…

布隆过滤器,Redis之 bitmap,场景题【如果微博某个大V发了一条消息,怎么统计有多少人看过了】

学习文档 文章目录 一、什么是 Bitmap1-1、Bitmap 相关命令 二、Bitmap 和 Set 对比2-1、数据准备2-2、内存对比2-3、性能对比 三、布隆过滤器3-1、理论3-2、代码实现 四、Java中的 Hash 函数 最近面试时,遇到了一个场景题,面试官问如何统计一条微博大V的…

计算机网络扫盲(1)——因特网

一、概述 因特网是一个世界范围的计算机网络,即它是一个互联了遍及全世界数十亿计算设备的网络。大家对此应该并不陌生,我们身边有着不计其数的计算机设备被接入了因特网,如今计算机网络这个术语似乎已经有点过时了,用因特网的术语…

结合贝叶斯定理浅谈商业银行员工异常行为排查

1.贝叶斯定理的数学表达 贝叶斯方法依据贝叶斯定理。关于贝叶斯定理解释如下:首先我们设定在事件B条件下,发生事件A的条件概率,即 ,从数学公式上,此条件概率等于事件A与事件B同时发生的概率除以事件B发生的概率。 上述…

MyBatis增删改查和配置文件

MyBatis增删改查 MyBatis新增 新增用户 持久层接口添加方法 void add(User user);映射文件添加标签 <insert id"add" parameterType"com.mybatis.pojo.User">insert into user(username,sex,address) values(# {username},# {sex},# {address}) <…

海林猴头菇 区域公用品牌形象正式发布

猴头菇是中国八大“山珍”之一&#xff0c;自古就有“山珍猴头&#xff0c;海味燕窝”之说&#xff0c;猴头菇在中国既是食用珍品&#xff0c;又是重要的药用菌。 海林市位于黑龙江省东南部&#xff0c;地处长白山脉张广才岭东麓&#xff0c;素有“林海雪原”之称。 海林猴头菇…

虚函数表和虚函数在内存中的位置

文章目录 结论验证 结论 虚函数表指针是虚函数表所在位置的地址。虚函数表指针属于对象实例。因而通过new出来的对象的虚函数表指针位于堆&#xff0c;声名对象的虚函数表指针位于栈 虚函数表位于只读数据段&#xff08;.rodata&#xff09;&#xff0c;即&#xff1a;C内存模…

《opencv实用探索·八》图像模糊之均值滤波简单理解

1、前言 什么是噪声&#xff1f; 该像素与周围像素的差别非常大&#xff0c;导致从视觉上就能看出该像素无法与周围像素组成可识别的图像信息&#xff0c;降低了整个图像的质量。这种“格格不入”的像素就被称为图像的噪声。如果图像中的噪声都是随机的纯黑像素或者纯白像素&am…

jionlp :一款超级强大的Python 神器!轻松提取地址中的省、市、县

在日常数据处理中&#xff0c;如果你需要从一个完整的地址中提取出省、市、县三级地名&#xff0c;或者乡镇、村、社区两级详细地名&#xff0c;你可以使用一个第三方库来实现快速解析。在使用之前&#xff0c;你需要先安装这个库。 pip install jionlp -i https://pypi.douba…

如何使用注解实现接口的幂等性校验

如何使用注解实现接口的幂等性校验 背景什么是幂等性为什么要实现幂等性校验如何实现接口的幂等性校验1. 数据库唯一主键2. 数据库乐观锁3. 防重 Token 令牌4. redis 如何将这几种方式都组装到一起结语 背景 最近在小组同学卷的受不了的情况下&#xff0c;我决定换一个方向卷去…

Docker Compose及Docker 知识点整理

目录 1、Docker Compose 简介 2、为什么要使用Docker Compose 3、Docker Compose安装使用&#xff08;Linux&#xff09; 3.1 下载 3.2 mkdir docker 文件夹目录 3.3 上传docker-compose到docker文件夹 3.4 移动到 /usr/local/bin 目录下 3.5 添加执行权限 3.6 修改文…

图文深入理解TCP三次握手

前言 TCP三次握手和四次挥手是面试题的热门考点&#xff0c;它们分别对应TCP的连接和释放过程&#xff0c;今天我们先来认识一下TCP三次握手过程&#xff0c;以及是否可以使用“两报文握手”建立连接&#xff1f;。 1、TCP是什么&#xff1f; TCP是面向连接的协议&#xff0c;…

关于Typora如何插入自己的云端视频的方法

关于Typora如何插入自己的云端视频的方法 文章目录 关于Typora如何插入自己的云端视频的方法前言&#xff1a;实现步骤&#xff1a;小结 前言&#xff1a; 我本来使用gitee来作为typora的图床&#xff0c;但我现在想要把我自己的视频上传到云端&#xff0c;然后通过超链接在ty…