什么是 OpenTelemetry?
OpenTelemetry 定义
OpenTelemetry (OTel) 是一个开源可观测性框架,允许开发团队以单一、统一的格式生成、处理和传输遥测数据。它由云原生计算基金会 (CNCF) 开发,旨在提供用于收集指标、日志和跟踪并将它们路由到监控平台的标准化协议和工具。
OpenTelemetry 提供供应商中立的 SDK、API 和工具,因此您可以将数据发送到任何可观测性后端进行分析。
OpenTelemetry 正在迅速成为云原生应用程序中占主导地位的可观测性遥测标准。对于希望为未来的数据需求做好准备,同时又不希望受限于特定供应商或现有技术局限性的组织而言,采用 OpenTelemetry 至关重要。
那么,什么是遥测数据?
遥测数据包括从分布式系统收集的日志、指标和跟踪。这些数据被称为“可观测性的三大支柱”,可以帮助开发人员、DevOps 和 IT 团队了解其系统的行为和性能。
日志:日志是在特定时间点发生的系统中离散事件的文本记录。每次执行代码块时都会生成日志条目。它们通常包括一个显示事件发生时间的时间戳以及一个上下文有效负载。日志数据有多种格式,包括纯文本、结构化和非结构化。日志对于故障排除、调试和验证代码特别有用。
指标:指标是在一段时间间隔内测量的数值,通常称为时间序列数据。它们包括时间戳、事件名称和事件值等属性。在现代系统中,指标使我们能够监控、分析和响应问题并促进警报。它们可以告诉您有关基础架构或应用程序的信息,例如系统错误率、CPU 利用率或服务的请求率。
跟踪:跟踪表示请求通过分布式系统的路径。OpenTelemetry 中的跟踪由其跨度定义。一组跨度构成一个跟踪。跟踪帮助团队了解请求通过各种服务和组件的端到端旅程和行为。分布式跟踪允许您跟踪完整的执行路径并识别导致问题的代码。跟踪提供了对应用程序整体运行状况的可见性,但对其底层基础架构的可见性有限。要全面了解您的环境,您需要可观测性的另外两大支柱:日志和指标。
OpenTelemetry 简史
OpenTracing 和 OpenCensus 是独立开发的重叠分布式跟踪项目,旨在解决缺乏标准化数据格式的问题。OpenTelemetry 的创建是为了合并 OpenTracing 和 OpenCensus 项目的代码库,将各自的优势结合到云原生计算基金会托管的单个项目中。
OpenTracing 提供供应商中立的 API,用于将数据发送到后端。OpenCensus 是开发人员用来检测其代码并将数据发送到后端的特定于语言的库的集合。两者都是开源的,这意味着该软件的源代码是协作开发的,任何人都可以使用、修改和分发。
借助 OpenTelemetry,开发人员不再需要在 OpenTracing 和 OpenCensus 之间进行选择。OpenTelemetry 提供了一组统一的库、API、代理和收集器服务,用于收集和传输数据。
OpenTelemetry 如何工作?
OpenTelemetry 提供了一个通用框架,用于收集遥测数据并将其导出到您选择的可观测性后端。它使用一组标准化、与供应商无关的 API、SDK 和工具来提取、转换和传输数据。
特定于语言的 OpenTelemetry API 协调整个系统的遥测数据收集并检测您的代码。OpenTelemetry SDK 通过库来实现和支持 API,这些库有助于数据收集、处理和导出。OpenTelemetry 还提供服务的自动检测并支持自定义检测。您可以使用供应商提供的导出器或 OpenTelemetry 协议 (OTLP) 导出遥测数据。
OpenTelemetry 的核心组件
OpenTelemetry 的核心组件包括
收集器
OpenTelemetry 收集器是一个与供应商无关的代理,用于接收、处理和导出遥测数据。它支持以多种格式接收遥测数据,以及在导出之前处理和过滤遥测数据。
语言 SDK
OpenTelemetry 语言 SDK 允许您使用 OpenTelemetry API 生成遥测数据并使用一种语言将数据导出到后端。
检测库
OpenTelemetry 支持各种组件,这些组件可以从流行的库和框架中生成相关的遥测数据,以支持的语言。
自动检测
特定于语言的 OpenTelemetry 实现可以提供一种检测应用程序的方法,而无需更改源代码。
导出器
通过将检测与后端配置分离,导出器可以更轻松地更改后端,而无需更改检测。它们还允许您将遥测上传到多个后端。
OpenTelemetry 的优势
OpenTelemetry 的优势在于数据标准化和面向未来的灵活性,从而提高可观测性、提高效率并降低成本。
数据收集的标准化
OpenTelemetry 为 DevOps 团队提供了一种解决方案,他们希望以一致的方式收集遥测数据并将其导出到 Splunk、New Relic、Dynatrace 和 Datadog 等后端,而无需更改检测。凭借开放标准和标准化数据收集,OpenTelemetry 提高了可见性和简化了可观测性。借助更易于设置的可观测性,团队可以更好地了解系统运行状况、识别性能问题并减少在服务中断发生之前解决根本原因所需的时间。使用 OpenTelemetry 的组织不需要浪费时间开发内部解决方案或为多个应用程序研究单个工具。通过减少噪音、成本和配置更改的需求,OpenTelemetry 使组织能够专注于利用其数据,而不是如何收集数据。洞察力可以使用最有意义的工具或格式传递给团队,从而改善协作。
避免供应商锁定
OpenTelemetry 使团队可以自由选择他们想要的任何后端,而无需绑定到特定的供应商,面向未来地保护他们的投资。它可以适应系统、后端和流程的变化,因此您永远不会被锁定在单一平台、解决方案或合同中,从而使组织能够随着技术需求的发展而扩展和适应。这种独立性和灵活性意味着您可以根据最符合您的底线和客户利益的方式做出业务决策,而不是受限于您的技术。
借助 OpenTelemetry,您可以获得增长的可扩展性、跨平台的兼容性以及与现有监控和可观测性工具的轻松集成。
OpenTelemetry 与 Elastic
OpenTelemetry 提供了一种使用统一遥测格式检测应用程序的标准方法,但它不提供后端或分析组件。Elastic 可观测性将OpenTelemetry 数据无缝集成到开放且可扩展的 Elasticsearch 平台中。
Elastic 本身支持 OpenTelemetry 协议,允许我们引入多种语言的日志、指标和跟踪。这使得利用 Elastic 强大的分析和可视化功能进行扩展变得更加容易。
2023 年 4 月,Elastic 将其 Elastic 通用模式 (ECS) 贡献给了 OpenTelemetry,其长期目标是将语义约定与 ECS 相融合,以实现通用的遥测数据模式。Elastic 计划对其数据架构标准化 OpenTelemetry,并将在未来增加对 OpenTelemetry 项目的投资和合作。
Elastic 也是 OpenTelemetry 项目的重要贡献者。为了帮助管理员监控和排除其 CI/CD 平台故障,并帮助开发人员提高其 CI/CD 管道的速度和可靠性,Elastic 可观测性提供了对 CI/CD 流程的可见性。为了提供有关管道的监控仪表板、警报和根本原因分析,Elastic 与最流行的 CI/CD 平台(包括Jenkins、Ansible 和 Maven)的社区合作,使用 OpenTelemetry 检测工具。
Elastic 可观测性是一个企业级解决方案,使组织能够将 OpenTelemetry 检测收集的数据直接发送到 Elastic 部署。它使您可以完全了解您的混合云应用程序,并能够存储、分析和可视化所有内容。您还可以使用 Elastic 强大的机器学习功能来减少分析和恢复时间。
OpenTelemetry 常见问题解答
OpenTelemetry 是一种标准吗?
是的。OpenTelemetry 是一个开源项目,也是日志、跟踪和指标的统一标准。
遥测的例子有哪些?
遥测数据的示例包括系统监控和可观测性中使用的日志、指标和跟踪。
OpenTelemetry 和 Jaeger 之间有什么区别?
OpenTelemetry 可帮助您处理数据并将其导出到各种开源和商业后端,但它不像 Jaeger 那样是可观测性后端。OpenTelemetry 提供了一组 API、SDK 和工具来帮助生成和管理遥测数据,而 Jaeger 是一个开源分布式跟踪工具。IT 团队使用 Jaeger 来监控和排除基于微服务架构的应用程序故障。Jaeger 不支持日志和指标。
OpenTelemetry API 和 SDK 之间有什么区别?
OpenTelemetry API(应用程序编程接口)协调整个系统的遥测数据收集并检测您的代码。由于 API 是特定于语言的,因此它们必须与您的代码语言相匹配。OpenTelemetry SDK(软件开发工具包)通过库来实现和支持 API,这些库有助于数据收集、处理和导出到可观测性后端。