当前位置: 首页 > news >正文

OpenTelemetry 从入门到精通

快速入门

OpenTelemetry 是一个可观测性框架和工具包, 旨在创建和管理遥测数据,如链路、 指标和日志。 重要的是,OpenTelemetry 是供应商和工具无关的,这意味着它可以与各种可观测性后端一起使用, 包括 Jaeger 和 Prometheus 这类开源工具以及商业化产品。

OpenTelemetry 不是像 Jaeger、Prometheus 或其他商业供应商那样的可观测性后端。 OpenTelemetry 专注于遥测数据的生成、采集、管理和导出。 OpenTelemetry 的一个主要目标是, 无论应用程序或系统采用何种编程语言、基础设施或运行时环境,你都可以轻松地将其仪表化。 重要的是,遥测数据的存储和可视化是有意留给其他工具处理的

一句话总结:定义一套标准规范来生成、收集遥测数据。

官方文档:什么是 OpenTelemetry? | OpenTelemetry

什么是可观测性?

可观测性是通过检查系统输出来理解系统内部状态的能力。 在软件的背景下,这意味着能够通过检查遥测数据(包括链路、指标和日志)来理解系统的内部状态。

要使系统可观测,必须对其进行仪表化。也就是说,代码必须发出链路、指标或日志。 然后,仪表化的数据必须发送到可观测性后端。

为什么选择 OpenTelemetry?

随着云计算、微服务架构的兴起和日益复杂的业务需求,软件和基础设施的可观测性需求比以往任何时候都要强烈。

OpenTelemetry 满足可观测性的需求,并遵循两个关键原则:

  1. 你所生成的数据归属于你自己,不会被供应商锁定。
  2. 你只需要学习一套 API 和约定。

这两个原则的结合赋予团队和组织在当今现代计算世界中所需的灵活性。

OpenTelemetry 广泛应用于许多已集成 OpenTelemetry 提供默认可观测性的库、服务和应用。

OpenTelemetry 是云原生计算基金会 (CNCF)的一个项目,是由 OpenTracing 和 OpenCensus 项目合并而成的。原来这两个项目都是为解决同样的问题而创建的: 缺乏一种标准的方法来为代码进行仪表化并将遥测数据发送到可观测性后端。 由于这两个项目都无法独立解决这个问题,所以将其合并成立了 OpenTelemetry, 吸收了双方的优势,提供了统一的解决方案。

以 Java 语言实现特定的 OpenTelemetry

OpenTelemetry 是一个可观测性框架,包含 API、SDK 和工具,旨在帮助生成和收集应用程序遥测数据(例如指标、日志和跟踪记录)。

OpenTelemetry Java 由以下仓库组成:

  • opentelemetry-java: 用于手动插桩的组件,包括 API 和 SDK,也包括扩展和 OpenTracing shim。
  • opentelemetry-java-instrumentation: 建立在 opentelemetry-java 之上,并提供一个 Java agent JAR,可以附加到任何 Java 8+ 应用程序,并动态注入字节码,从许多流行的库和框架中捕获遥测数据。

Zero-code: Java agent

The Java agent is a form of zero-code automatic instrumentation that dynamically manipulates application bytecode.

For a list of libraries instrumented by the Java agent, see the “Auto-instrumented versions” column on supported libraries.

See Java agent for more details.

Zero-code: Spring Boot starter

The Spring Boot starter is a form of zero-code automatic instrumentation that leverages spring autoconfigure to install library instrumentation.

See Spring Boot starter for details.

OpenTelemetry Java SDK - 观测云文档

定义指标&使用

 Meter meter = GlobalOpenTelemetry.getMeter("io.opentelemetry.example.metrics");meter.gaugeBuilder("jvm.memory.total").setDescription("Reports JVM memory usage.").setUnit("byte").buildWithCallback(result -> result.record(Runtime.getRuntime().totalMemory(), Attributes.empty()));

用户通过open telemetry api来定义指标,底层agent来实现公司相应的exporter来打通后端的真实存储。这样的好处,后面公司的存储系统发生了变化,业务程序不需要修改,可调整agent即可。

http://www.xdnf.cn/news/524971.html

相关文章:

  • ffmpeg转码后的视频有横条纹和彩虹横条等乱彩问题
  • uniapp-商城-62-后台 商品列表(分类展示商品的布局)
  • cmd里可以使用npm,vscode里使用npm 报错
  • 深入解析分布式数据库TiDB:原理、优化与架构实践
  • 深度学习---模型预热(Model Warm-Up)
  • 全能视频处理工具介绍说明
  • 机器学习--特征工程具体案例
  • 虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?
  • Go 语言 vs C+Lua(Skynet)游戏服务器方案对比分析
  • 睿抗足球机器人
  • chrome因使用selenium无图模式导致不再加载图片问题解决
  • Genetic Algorithm改进策略全【编码/适应度/选择/交叉/变异/参数选择/终止条件】
  • VR 互动实训的显著优势​
  • Ubuntu20.04下使用dpkg方式安装WPS后,将WPS改为中文界面方法
  • ubuntu系统 | dify+ollama+deepseek搭建本地应用
  • 【Linux学习】Ubuntu对用户进行管理
  • 【SPIN】PROMELA并发编程(SPIN学习系列--3)
  • 深入探究AKS Workload Identity
  • 【数据结构篇】排序1(插入排序与选择排序)
  • 「数智化聚合分销生态系统」定制开发:重构全渠道增长引擎
  • 高项-挣值管理TCPI
  • Git本地使用小Tips
  • Docker项目部署深度解析:从基础命令到复杂项目部署
  • NFT市场开发技术全解析:从架构设计到实现
  • 自动化测试框架搭建步骤
  • java基础-抽象类和抽象方法
  • 【成品设计】基于STM32的自动售卖机
  • day30 python 模块、包与库的高效使用指南
  • HTTP由浅入深
  • 前端工程的相关管理 git、branch、build