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

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.lryc.cn/news/2380146.html

相关文章:

  • 数学复习笔记 17
  • C语言:在操作系统中,链表有什么应用?
  • 解锁MySQL性能调优:高级SQL技巧实战指南
  • 裸金属服务器和云服务器之间的差别
  • WebSocket实时双向通信:从基础到实战
  • 【免杀】C2免杀技术(六)进程镂空(傀儡进程)
  • ETL数据集成产品选型需要关注哪些方面?
  • Eclipse Java 开发调优:如何让 Eclipse 运行更快?
  • 彻底理解事件循环(Event Loop):从单线程到异步世界的桥梁
  • java加强 -stream流
  • Vue百日学习计划Day33-35天详细计划-Gemini版
  • Linux(2)——shell原理及Linux中的权限
  • 如何在线免费压缩PDF文档?
  • EasyExcel动态表头
  • 汽车装配又又又升级,ethernetip转profinet进阶跃迁指南
  • css:无限滚动波浪线
  • 显示器无法接受键盘/鼠标问题解决
  • w~自动驾驶~合集3
  • <C++> MFC自动关闭对话框(MessageBoxTimeout)
  • 山东大学计算机图形学期末复习整理5——CG10上
  • STM32移植LVGL8.3 (保姆级图文教程)
  • AT 指令详解:基于 MCU 的通信控制实战指南AT 指令详解
  • 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系
  • C++多态的详细讲解
  • vue项目启动报错
  • 项目删除了,为什么vscode中的git还是存在未提交记录,应该怎么删除掉
  • 免费私有化部署! PawSQL社区版,超越EverSQL的企业级SQL优化工具面向个人开发者开放使用了
  • SecureCRT 使用指南:安装、设置与高效操作
  • Tomcat多应用部署与静态资源路径问题全解指南
  • web常见的攻击方式