OpenTelemetry:新一代的开源可观测性标准

OpenTelemetry 介绍 本文系统介绍了OpenTelemetry的核心概念、发展历史、主要特点与优势、关键组件(API、SDK、Collector、导出器)、与主流后端(如Jaeger、Prometheus、Zipkin)的集成方式,以及在云原生环境下的应用价值。适合希望了解和落地可观测性体系的开发者与运维人员。 阅读详情

OpenTelemetry是由OpenTracing和OpenCensus两个开源项目合并而成,由云原生计算基金会(CNCF)托管。该项目旨在提供一套标准化的、跨语言的观测性工具,帮助开发人员和运维人员更好地理解和管理分布式系统的性能和行为。通过统一的Metrics(指标)、Logs(日志)和Traces(追踪)数据模型,OpenTelemetry使得数据收集、处理和分析变得更加高效和便捷。

在这里插入图片描述

OpenTelemetry的核心组成部分

1.日志(Logs)

日志是系统运行时事件的记录,包含了丰富的上下文信息,对于理解和调试应用程序的行为至关重要。OpenTelemetry的Log API定义了一种标准方式来记录和导出这些事件,确保了日志数据的一致性和可读性。

OpenTelemetry日志的标准格式通常包括以下几个部分:资源、日志记录、时间戳和日志内容。以下是一个示例,展示了如何使用OpenTelemetry收集和导出日志数据。

示例数据样例

{
  "resource": {
    "attributes": {
      "service.name": "example-service",
      "service.instance.id": "instance-1",
      "host.name": "host1"
    }
  },
  "instrumentationLibraryLogs": [
    {
      "instrumentationLibrary": {
        "name": "example-instrumentation",
        "version": "1.0.0"
      },
      "logs": [
        {
          "timeUnixNano": "1633046460000000000",
          "severityText": "INFO",
          "name": "example-log",
          "body": "This is an example log message",
          "attributes": {
            "http.method": "GET",
            "http.status_code": "200"
          }
        },
        {
          "timeUnixNano": "1633046465000000000",
          "severityText": "ERROR",
          "name": "example-error-log",
          "body": "This is an example error log message",
          "attributes": {
            "http.method": "POST",
            "http.status_code": "500"
          }
        }
      ]
    }
  ]
}

字段解释

resource: 描述了生成这些日志的资源信息,如服务名称、实例ID和主机名。

instrumentationLibraryLogs: 包含了仪表库的信息和相关的日志数据。

instrumentationLibrary: 描述了仪表库的名称和版本。

logs: 包含了具体的日志数据。

timeUnixNano: 日志记录的时间戳(纳秒)。

severityText: 日志的严重性级别(如INFO、ERROR等)。

name: 日志的名称。

body: 日志的内容。

attributes: 日志的属性,如HTTP方法和状态码。

2.指标(Metrics)

指标是对系统性能、资源使用情况等量化数据的度量。OpenTelemetry Metrics API使开发者能够计量特定事件的发生频率或资源的消耗量,并以标准格式暴露给监控系统,支持实时性能监控和趋势分析。

OpenTelemetry指标的标准格式通常包括以下几个部分:资源、仪表、时间序列和数据点。以下是一个示例,展示了如何使用OpenTelemetry收集和导出指标数据。

示例数据样例

{
  "resource": {
    "attributes": {
      "service.name": "example-service",
      "service.instance.id": "instance-1",
      "host.name": "host1"
    }
  },
  "instrumentationLibraryMetrics": [
    {
      "instrumentationLibrary": {
        "name": "example-instrumentation",
        "version": "1.0.0"
      },
      "metrics": [
        {
          "name": "http_requests_total",
          "description": "Total number of HTTP requests",
          "unit": "1",
          "data": {
            "sum": {
              "dataPoints": [
                {
                  "attributes": {
                    "http.method": "GET",
                    "http.status_code": "200"
                  },
                  "startTimeUnixNano": "1633046400000000000",
                  "timeUnixNano": "1633046460000000000",
                  "value": 100
                },
                {
                  "attributes": {
                    "http.method": "POST",
                    "http.status_code": "500"
                  },
                  "startTimeUnixNano": "1633046400000000000",
                  "timeUnixNano": "1633046460000000000",
                  "value": 5
                }
              ]
            }
          }
        }
      ]
    }
  ]
}

字段解释

resource: 描述了生成这些指标的资源信息,如服务名称、实例ID和主机名。

instrumentationLibraryMetrics: 包含了仪表库的信息和相关的指标数据。

instrumentationLibrary: 描述了仪表库的名称和版本。

metrics: 包含了具体的指标数据。

name: 指标的名称。

description: 指标的描述。

unit: 指标的单位。

data: 指标的数据类型,这里使用的是sum类型。

dataPoints: 包含了具体的数据点。

attributes: 数据点的属性,如HTTP方法和状态码。

startTimeUnixNano: 数据点的开始时间(纳秒)。

timeUnixNano: 数据点的结束时间(纳秒)。

value: 数据点的值。

3.调用链(Traces)

调用链追踪是理解分布式系统中请求流经各服务的路径和耗时的关键。OpenTelemetry Traces API提供了一套机制,用于捕获和记录服务间的调用关系,形成了服务调用的完整视图,极大地提升了故障排查的效率。

OpenTelemetry Trace的标准格式通常包括以下几个部分:资源、Span、时间戳和属性。以下是一个示例,展示了如何使用OpenTelemetry收集和导出Trace数据。

示例数据样例

{
  "resource": {
    "attributes": {
      "service.name": "example-service",
      "service.instance.id": "instance-1",
      "host.name": "host1"
    }
  },
  "instrumentationLibrarySpans": [
    {
      "instrumentationLibrary": {
        "name": "example-instrumentation",
        "version": "1.0.0"
      },
      "spans": [
        {
          "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
          "spanId": "00f067aa0ba902b7",
          "parentSpanId": "b9c7c989f97918e1",
          "name": "example-span",
          "kind": "SPAN_KIND_INTERNAL",
          "startTimeUnixNano": "1633046400000000000",
          "endTimeUnixNano": "1633046460000000000",
          "attributes": {
            "http.method": "GET",
            "http.status_code": "200"
          },
          "status": {
            "code": "STATUS_CODE_OK"
          }
        },
        {
          "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
          "spanId": "f2cda95b0b1c4a3a",
          "parentSpanId": "00f067aa0ba902b7",
          "name": "example-child-span",
          "kind": "SPAN_KIND_CLIENT",
          "startTimeUnixNano": "1633046410000000000",
          "endTimeUnixNano": "1633046450000000000",
          "attributes": {
            "db.system": "mysql",
            "db.statement": "SELECT * FROM users"
          },
          "status": {
            "code": "STATUS_CODE_OK"
          }
        }
      ]
    }
  ]
}

字段解释

resource: 描述了生成这些Trace的资源信息,如服务名称、实例ID和主机名。

instrumentationLibrarySpans: 包含了仪表库的信息和相关的Span数据。

instrumentationLibrary: 描述了仪表库的名称和版本。

spans: 包含了具体的Span数据。

traceId: Trace的唯一标识符。

spanId: Span的唯一标识符。

parentSpanId: 父Span的标识符(如果有)。

name: Span的名称。

kind: Span的类型(如INTERNAL、CLIENT等)。

startTimeUnixNano: Span的开始时间(纳秒)。

endTimeUnixNano: Span的结束时间(纳秒)。

attributes: Span的属性,如HTTP方法和状态码。

status: Span的状态码。

OpenTelemetry的优势

1.标准化:

OpenTelemetry通过提供统一的数据模型和接口,打破了不同厂商和平台之间的壁垒,使得遥测数据可以在不同系统间无缝流动。这大大降低了数据迁移和集成的难度,提高了系统的可观测性和可维护性。

2.跨语言支持:

OpenTelemetry支持多种编程语言,如Java、Python、Go等。这使得开发人员可以在不同语言编写的应用程序中使用OpenTelemetry进行分布式追踪和性能监控,实现跨语言追踪和统一观测。

image.png

3.易于集成和扩展:

OpenTelemetry提供了丰富的SDK和Collector实现,使得它可以轻松集成到现有的应用程序和服务中。同时,OpenTelemetry还支持自定义数据收集器和处理器,满足特定需求的数据收集和处理。

image.png

4.强大的社区支持:

作为CNCF的孵化项目,OpenTelemetry得到了广泛的社区支持和持续的更新。这使得OpenTelemetry能够不断迭代和优化,为开发人员和运维人员提供更好的观测性体验。

5.与现有标准的兼容性:

兼容现有的监控和追踪标准,如 OpenTracing 和 OpenCensus,确保了向新标准的平滑过渡。

OpenTelemetry的应用场景

通过集成OpenTelemetry SDK,应用可以自动收集详细的性能数据和调用链路信息,这些数据随后被导出至Prometheus、Jaeger或Elasticsearch等后端存储与分析系统。

在微服务架构中,OpenTelemetry可以用于追踪一个请求经过的所有服务,帮助开发者快速定位问题所在。

在云原生应用中,OpenTelemetry可以监控容器化应用的性能和资源使用情况,及时发现潜在问题。

在物联网设备中,OpenTelemetry可以收集远程设备的运行状态信息,为设备的维护和优化提供数据支持。

结论

OpenTelemetry作为新一代的开源观测性标准,为开发人员和运维人员提供了一种统一、高效、跨语言的观测性解决方案。通过标准化的数据模型和接口、跨语言支持、易于集成和扩展以及强大的社区支持等优势,OpenTelemetry正在逐步成为分布式追踪、日志收集和性能指标监控的主流方案。随着OpenTelemetry的不断发展和完善,相信它将在未来的软件开发和运维领域发挥更加重要的作用。

在这里插入图片描述

云原生内容分享(四):OpenTelemetry 重塑云原生的可观测性 随着云计算、微服务和容器化技术的快速发展,现代应用程序的架构变得越来越复杂。这种复杂性为运维人员和开发者带来了新的挑战,特别是在监控、追踪和诊断分布式系统的行为和性能方面。传统的监控工具和框架往往专注于单一的领域,如日志记录、度量收集或分布式追踪。然而,这些工具之间的互操作性和数据标准化程度有限,导致在大规模、多语言的云原生环境中实施全面可观测性变得困难且成本高昂。OpenTelemetry 与 Kubernetes 结合,构建了一套强大的云原生环境下的可观测性解决方案。 阅读详情

相关推荐

入门OpenTelemetry——应用自动埋点

简单说就是:“在合适的地方插追踪/监控代码”。要使用 OpenTelemetry 检测应用程序,可以前往访问 OpenTelemetry 存储库,选择适用于的应用程序的语言,然后按照说明进行操作。

qq_33816243的博客 1841

golang工程——opentelemetry简介、架构、概念、追踪原理

基本是opentelemetry 解决方案概念介绍。方案就是想统一生产中metrics、trace、log

qq_43058348的博客 1万+

【可观测性系列】 Opentelemetry 介绍

大家好,我是蓝胖子,随着微服务的流行,服务的可观测性概念被越来越多人提及到,究竟什么是可观测性?我们应该如何构建服务的可观测性?我将会在这篇文章中逐步提及到,并对和可观测性相关的工具 Opentelemetry做一个大致的介绍。

我活在当下,我巨他妈勇敢。 1377

初探 OpenTelemetry

OpenTelemetry 由 OpenTracing 和 OpenCensus 项目合并而成,是一组规范、工具、API 和 SDK 的集合。使用它来检测、生成、收集和导出遥测数据(Metrics、Logs 和 Traces),以帮助运维开发人员分析软件的性能和行为。为众多开发人员带来MetricsTracesLogs的统一标准,三者都有相同的元数据结构,可以轻松实现互相关联。OpenTelemetry 是一个CNCF孵化项目。OpenTelemetry 与厂商、平台无关,不提供与可观测性相关的后端服务。

weixin_38846160的博客 4780

天穹-Hera可观测性系列2:Hera-tracing之OpenTelemetry详解

“OpenTelemetry,也简称为OTel,是一个供应商中立的开源可观测性框架,用于检测、生成、收集和导出遥测数据,如链路追踪、 指标、 日志

天穹云原生 2059

可观测性能力升级,Apache APISIX 集成 OpenTelemetry

本文为您介绍 Apache APISIX opentelemetry 插件概念以及如何如何开启和部署 opentelemetry 插件。 背景信息 Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。作为 API 网关,Apache APISIX 不仅拥有众多实用的插件,而且支持插件动态变更和热插拔。 OpenTelemetry 是一个开源的遥测数据采集和处理系统,它不仅提供了各种 SDK 用于应用端遥测数

ApacheAPISIX的博客 2785

OpenTelemetry (OTEL):云原生时代的可观测性标准与实战指南

OpenTelemetry(OTEL)是CNCF维护的云原生可观测性标准框架,支持Trace、Metrics和Logs三种数据类型。文章详细介绍了OTEL的架构、数据采集方式(自动/手动插桩)以及核心组件(SDK、Exporter、Collector)。通过Java和Python的实战示例演示了如何集成OTEL,并对比了两者的实现差异。作为OpenTracing和OpenCensus的统一方案,OTEL已成为构建现代APM系统的基石,支持多种后端系统如Jaeger、Prometheus等,是实现智能运维的关

gs80140的专栏 1943

可观测性OpenTelemetry-Metrics(指标)

在介绍指标(Metrics)之前,我们先了解一下:什么是OpenTelemetry?微服务架构使开发人员能够更快地构建和发布软件,同时具有更大的独立性,因为他们不再受制于与单体架构相关的繁琐发布流程。随着这些现在分布式的系统的规模扩大,开发人员越来越难以看到他们自己的服务如何依赖或影响其他服务,特别是在部署期间或停机期间,速度和准确性至关重要。观测性使开发人员和操作员都能够获得对其系统的可见性。那么呢?为了使系统具有可观测性,必须进行仪表化。也就是说,代码必须发出跟踪、度量和日志。

BASK2311的博客 2398

可观测性 2026 趋势:eBPF、OpenTelemetry 和 AIOps 的融合

核心原理:eBPF(extended Berkeley Packet Filter)允许在 Linux 内核中运行沙箱程序,无需修改内核代码或加载内核模块。

好代码自己会说话,烂代码才需要注释来圆谎 5953

Circos图审美拯救计划:用TBtools复刻Nature级共线性分析图谱

本文针对Circos图在共线性分析中的审美提升问题,提供了一套基于TBtools的完整优化方案。通过构建和谐的色彩体系、精细控制信息层布局以及模仿顶刊构图逻辑,详细讲解了如何从配色、透明度、标签显示到高级参数设置,将默认图表升级为具有高级学术美感的Nature级图谱,助力研究者提升论文图表质量。

cherry的博客 911

VMware VSAN 高级参数介绍(测试用)

VSAN 的策略驱动让我们看到了VSAN无穷的潜力,其设计思路相当新颖,在一个基础资源池上使用策略就能实现不同对象的区分服务,而目前没有其他厂家能到VMware这样的高度。 VSAN 呈现给用户配置很简单,但实际上设计及后台比较复杂。笔者无意间发现了VSAN的隐藏高级参数设置,有很多好玩的选项想分享出来。这些参数全部是针对每主机进行设置的。VSAN 中有很多默认设置,这些设置应该都是研发人员多次测试得出的最优值,修改可能导致环境异常,并不建议修改! 目录 参数1:全闪配置下 SSD 写缓存最大.

山水牧羊 2032

系统可观测性(5)OpenTelemetry基础使用

OpenTelemetry是一个开源的、独立于供应商的遥测数据收集和管理框架,旨在帮助实现系统的可观测性。它为创建和管理追踪、指标和日志等遥测数据提供了一套标准化的工具和API。

梅花香自苦寒来,宝剑锋从磨砺出。 2442

记录rk3588 在Linux 6.1内核版本声卡 bug。

rk3588 Audio bug

Yongheng6的博客 855

分享OpenTelemetry:统一分布式系统可观测性数据采集的开源框架

摘要:OpenTelemetry(OTel)作为CNCF开源可观测性框架,通过统一API、SDK和采集器标准化采集Trace、Metric、Log三类数据,实现"一次采集,多端复用"。其核心组件包括API层(跨语言接口)、SDK层(采样/标签配置)、Collector(数据中转)和自动埋点功能,能有效解决分布式系统链路追踪、指标监控、日志关联等需求,避免工具锁定,降低维护成本。与Zipkin等工具协同,OTel提升了系统可观测性建设的灵活性和效率。

jobleap.cn求职助手首页 1863

一文搞懂深度学习:最全神经网络介绍

本文是深度学习系列文章的第二篇,我们将深入探讨各种类型的人工神经网络,探索它们独特的特性和应用。

2402_82802238的博客 2801

CentOS 9 Stream 上安装 MySQL 8.0+

根据提示进行设置,包括设置新的 root 密码、禁用远程 root 登录等。MySQL 在首次安装时会生成一个临时密码。这样就完成了 MySQL 8.0.37 的安装。这将安装最新的 MySQL 8.0 版本。

小强不是坑 1681

SigNoz监控标准化:OpenTelemetry规范实践

在微服务架构日益普及的今天,传统的监控方式已经无法满足现代分布式系统的需求。你是否曾遇到过这样的困境: - 服务调用链断裂,无法追踪完整的请求路径 - 日志、指标、追踪数据分散在不同系统,难以关联分析 - 监控工具厂商锁定,迁移成本高昂 - 自定义监控需求难以满足,扩展性受限 OpenTelemetry(OTel)作为CNCF毕业项目,正在重新定义可观测性标准。而SigNoz作为基于OpenT...

gitblog_00601的博客 698

RandLA-Net Tensorrt 推理 c++

RandLA-Net 实现 Tensorrt 部署.

J。 1111

云原生之可观测性-OpenTracing、OpenSensus、OpenTelemetry

一、OpenTracing官网地址:https://opentracing.io/OpenTracing是CNCF(Cloud Native Computing Foundation pr...

ixxqq的博客 2171

微信文件自动归档!手把手教你用OpenClaw搭个自己的“数字员工”,告别重复劳动

很多人说“AI是未来”,但未来不是靠喊口号的。OpenClaw的真正价值,是让你把重复劳动交出去,把时间留给真正需要创造力的事。这事真能干,而且不难。下载OpenClaw(GitHub仓库按我写的步骤跑一遍遇到坑,评论区留言——我亲自帮你看作者后记:上周五,我让AI自动归档了文件后,终于在5点准时下班。回家路上,我给它发了条消息:“干得漂亮”。它没回,但我知道——它在默默等我的下一条指令。

2601_94871597的博客 415

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

什么是 OpenTelemetry?

​OpenTelemetry (OTel) 是一个开源可观测性框架,允许开发团队以单一、统一的格式生成、处理和传输遥测数据(telemetry data)。它由云原生计算基金会 (CNCF) 开发,旨在提供标准化协议和工具,用于收集和路由指标、日志和跟踪到监控平台。OpenTelemetry 提供与供应商无关的 SDK、API 和工具,因此你的数据可以发送到任何可观测性后端进行分析。OpenTelemetry 正迅速成为云原生应用程序中占主导地位的可观测性遥测标准。对于希望为未来的数据需求做好准备

Elastic 中国社区官方博客 5114

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

开源宝藏:OpenTelemetry.io —— 全面的可观测性解决方案

![OTel Logo](https://opentelemetry.io/img/logos/opentelemetry-logo-nav.png) OpenTelemetry.io 是一个致力于提供统一可观测性的开源项目,它包括官方网站、详细的项目文档和丰富的博客资源。该项目基于强大的[Hugo][hugo]框架构建,并在[Netlify][netlify]上托管,为开发者提供了无缝接入和学

gitblog_00034的博客 409

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OpenTelemetry 赋能DevOps流程的可观测性革命

深入探讨 OpenTelemetry 如何与左移和 GitOps 策略相结合,赋能 DevOps 流程中的各个环节。

乘云数字DATABUFF官方博客 1562

OpenTelemetry 实战:云原生可观测性三大支柱统一标准

摘要:OpenTelemetry——云原生可观测性统一标准 OpenTelemetry(OTel)是CNCF孵化的可观测性标准项目,解决了2016年后微服务架构带来的工具碎片化问题。它整合了OpenTracing和OpenCensus的功能,支持Traces、Metrics和Logs三大信号,已成为云原生领域的事实标准。 OTel采用三层架构设计: API层:定义标准接口 SDK层:实现具体功能 收集层:通过OTel Collector处理数据 核心功能包括: 分布式追踪:基于W3C TraceContex

xyghehehehe的专栏 629
上一篇: RUM技术探索:前端监控数据采集与实践
下一篇: 一文带你了解可观测领域中APM与eBPF的技术差异
aiSRE工程狮
博客等级 码龄5年 423粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值