作者:Morgan McLean
OpenTelemetry 的指标功能现在可以作为候选版本,在 Java,.NET,还有 Python 使用!这意味着规范、API、SDK,以及创作、捕获、处理和以其他方式与指标交互的其他组件,现在拥有完整的 OpenTelemetry 指标功能集,并且随时可供使用。这些候选版本将在未来几周内正式发布。
指标的 1.0 版本包括以下:
- OpenTelemetry 语言特定的 API 中包含的指标功能,它提供了语言特定的接口,可以创建和操作指标,并将元数据和属性关联到每个指标。这些对以下方面很有用:
- 分发给最终用户的共享库的开发者,以便这些最终用户可以原生使用 OpenTelemetry 从这些库中捕获指标。例如,gRPC 使用这些 API 为给定服务上的每个 RPC 方法生成延迟、吞吐量和错误率指标。
- 创建和维护 web 服务或客户端应用程序的开发人员,这样他们就可以生成自定义指标或与现有指标进行交互。例如,一家电子商务公司可以使用 API 来追踪一段时间内的购买量。
- Java、.NET、Python 和 JS(下周发布) OpenTelemetry SDK 中包含的指标功能,它们从 API 中捕获指标并执行一些处理。对其他语言的指标支持仍在开发中。这些对以下方面很有用:
- 其他组织使用的应用程序的开发人员,如数据库、消息队列等,他们将通过 OTLP(或 Prometheus)暴露指标,以便他们自己的最终用户能够监控这些应用的性能。这些应用程序可以是开源或闭源的。
- 技术组织中的应用程序开发人员,他们希望在其应用程序中捕获 OpenTelemetry API 生成的指标,这些指标可以由他们自己的开发人员生成,也可以来自他们的应用程序所依赖的共享库。这些指标可以通过 OTLP 导出,或者通过任何其他 OpenTelemetry 导出器导出。
- 收集器对指标的支持包括收集器从各种数据源(如主机指标或预打包的应用程序)中捕获指标的能力。收集器还提供了使用多种数据协议从数据源接收指标的能力,例如原生 OpenTelemetry 协议(OTLP)和兼容 OpenMetrics 的协议,例如 Prometheus。还支持配置驱动的指标处理和原生 OTLP、Prometheus 和自定义导出器,以便将可观测性指标发送到你选择的云上和内部监控系统。此功能集对于以下方面非常有用:
- 任何希望从其主机(Linux 虚拟机、Windows、虚拟机、Kubernetes 等)或预打包的应用程序(数据库、消息队列等)获取指标的人。
- 任何希望从 OTLP(从 OpenTelemetry SDK、预打包应用程序等)、Prometheus,或者其他现有来源获取指标的人。
- 任何想要处理/修改从这些来源获取的指标和指标元数据的人。
- 任何想要将指标从一种格式转换成另一种格式的人。例如,收集器可以从 OTLP 和 Prometheus 来源的混合中捕获指标,然后使用 OTLP(使用标准的 OpenTelemetry 语义约定)、Prometheus 或任何其他导出器将所有这些发送到一个目的地。
- 完全的 OTLP 支持,可在系统间高效序列化和传输指标。
- 规范的指标部分,它定义了不同类型的指标、它们的形状、如何处理它们以及语义约定。这主要给 OpenTelemetry 贡献者使用,但也为创作指标或元数据的 OpenTelemetry 用户提供指导。
所有这些功能都是对 OpenTelemetry 现有追踪支持的补充,两种信号类型共享相同的元数据和语义约定。截至此次发布,以下语言已经发布了指标的候选版本:
- Java
- .NET
- Python
JS 的候选版本计划在下周发布,在接下来的几个月里,将会有更多的语言发布指标候选版本。在我们收到用户的反馈后,每个版本都会正式发布。
入门指南
如果你已经混合使用了 OpenTelemetry API、SDK、代理和收集器,那么你可以通过将 OpenTelemetry 工件更新到最新版本来获得候选版本指标功能。我们目前正在为每个工件的指标能力更新官方 OpenTelemetry 文档[1]。示例和补充文档也会添加到每个工件对应的 GitHub 仓库中。
OpenTelemetry 的下一步
当我们在 2019 年欧洲 Kubecon 上宣布 OpenTelemetry 的核心承诺时,分布式追踪和指标是它的两个部分。随着指标的普遍可用,我们已经产生了我们最初打算创建的功能,这意味着我们可以将重点转移到进一步投资于每个组件的健壮性和易用性、OpenTelemetry 可以从中捕获遥测数据的数据源数量(通过 OpenTelemetry API、OTLP 或其他方式),以及新的功能和信号类型。
日志是最明显的,我们正在全速前进。期待听到更多关于我们一年来在日志方面的进展(日志已经有了稳定的数据模型和 OTLP 支持),欢迎任何对此领域感兴趣的人加入每周日志 SIG 的会议。除了日志之外,主要的新项目还包括正式化和实施客户端工具以,及对 eBPF 的调查。随着指标的完成,我们还可以将注意力转向更多的信号类型。
参考资料
[1]
官方 OpenTelemetry 文档: https://opentelemetry.io/docs/
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。