跳到主要内容

1 篇博文 含有标签「云原生」

查看所有标签

OpenTelemetry介绍

· 阅读需 30 分钟

1. 概述

什么是OpenTelemetry

OpenTelemetry是一个观测性框架和工具包,旨在创建和管理遥测数据,如追踪、指标和日志。OpenTelemetry是厂商和工具无关的,意味着它可以与各种观测性后端一起使用,包括像Jaeger和Prometheus这样的开源工具,以及商业解决方案。OpenTelemetry是一个Cloud Native Computing Foundation(CNCF)项目。

上面是OpenTelemetry的官方介绍,说人话就是: OpenTelemetry就像是你应用的"体检中心",它能自动收集应用的各项指标(心跳、血压)、追踪请求链路(看病流程)、记录日志(病历),并把数据统一格式发给各种监控系统(Prometheus、Jaeger等)。上面这些在OpenTelemetry项目之前都是由各个厂商自己开发的,现在OpenTelemetry把这些功能都集成到一起,方便开发者使用。作为一个行业标准,OpenTelemetry 得到了40多个可观测性供应商的支持,被许多 库、服务和应用程序集成,并被众多终端用户采用。

发展历史与背景

  • Google 2010年发布的 Dapper 论文是分布式链路追踪的开端
  • 2012年 Twitter 开源了 Zipkin
  • 2015年 Uber 发布了 Jaeger 的开源版本。目前 Zipkin 和 Jaeger 仍然是最流行的分布式链路追踪工具之一
  • 2015年 OpenTracing 项目被 CNCF 接受为它的第三个托管项目,致力于标准化跨组件的分布式链路追踪
  • 2017年 Google 将内部的 Census 项目开源,随后 OpenCensus 在社区中流行起来
  • 2019年初,两个现有开源项目:OpenTracing 和 OpenCensus 被宣布合并为 OpenTelemetry 项目
  • 2021年,OpenTelemetry 发布了V1.0.0,为客户端的链路追踪部分提供了稳定性保证
  • 2023年是 OpenTelemetry 的里程碑,其三个基本信号——链路追踪、指标和日志,都达到了稳定版本

主要特点与优势

  • 统一标准

    • 提供统一的API和SDK规范,整合了追踪(Tracing)、指标(Metrics)和日志(Logs)三大观测信号
    • 取代了之前的OpenTracing和OpenCensus两个标准,解决了社区分裂问题
    • 数据格式标准化,兼容主流观测后端(Prometheus, Jaeger, Zipkin等)
  • 多语言支持

    • 支持10+主流编程语言(Go, Java, Python, JS等)
    • 每种语言实现都遵循相同的API规范,保证跨语言一致性
    • 自动插桩(Auto-instrumentation)减少手动编码工作量
  • 可扩展架构

    • 模块化设计,支持自定义采样器、处理器和导出器
    • 通过OpenTelemetry Collector实现灵活的数据处理和路由
    • 可轻松集成现有监控系统和自定义观测后端
  • 生产就绪

    • CNCF毕业项目,拥有活跃的社区和广泛的企业采用
    • 主要组件已达到稳定版本(GA),适合生产环境使用
    • 丰富的文档和示例,降低学习和使用门槛
  • 实际价值

    • 统一技术栈,减少多套观测系统的维护成本
    • 提升问题排查效率,通过分布式追踪快速定位性能瓶颈
    • 标准化指标采集,实现跨服务的统一监控视图