在 APM 中使用 OpenTelemetry
Elastic Stack Serverless
有关将 OpenTelemetry 与 Elastic 结合使用的完整概述,请参阅 Elastic 发布的 OpenTelemetry。
OpenTelemetry 是一组 API、SDK、工具和集成,能够捕获和管理来自您的服务和应用程序的遥测数据。
Elastic 集成了 OpenTelemetry,允许您重用现有的仪器来轻松地将可观察性数据发送到 Elastic Stack。有几种方法可以将 OpenTelemetry 与 Elastic Stack 集成。
- Elastic 发布的 OpenTelemetry 语言 SDK
- 上游 OpenTelemetry API/SDK + Elastic APM 代理
- 上游 OpenTelemetry Collector 和语言 SDK
- AWS Lambda Collector Exporter
Elastic 提供了几种 OpenTelemetry 语言 SDK 的发行版。发行版 是上游 OpenTelemetry 存储库的定制版本。每个 Elastic 发布的 OpenTelemetry 都是 OpenTelemetry 语言 SDK 的定制版本。
通过 Elastic 发布的 OpenTelemetry 语言 SDK,您可以访问其定制的 OpenTelemetry SDK 的所有功能,此外还有
- 您可能会获得 Elastic 团队贡献的 SDK 改进和错误修复,这些改进和修复在 OpenTelemetry 存储库中可用之前即可获得。
- 该发行版预先配置了跟踪和指标信号的收集,并应用了一些主观默认设置,例如默认收集哪些源。
开始使用 Elastic 发布的 OpenTelemetry 语言 SDK
- Elastic 发布的 OpenTelemetry Java →
- Elastic 发布的 OpenTelemetry .NET →
- Elastic 发布的 OpenTelemetry Node.js →
- Elastic 发布的 OpenTelemetry Python →
- Elastic 发布的 OpenTelemetry PHP →
有关 OpenTelemetry 发行版的更一般性细节,请访问 OpenTelemetry 文档。
将 OpenTelemetry API/SDK 与 Elastic APM 代理 结合使用,将 OpenTelemetry API 调用转换为 Elastic APM API 调用。
这使您可以重用现有的 OpenTelemetry 仪器来创建 Elastic APM 事务和跨度 — 避免供应商锁定并无需重新进行手动仪器。
但是,在使用此方法时,并非所有 OpenTelemetry API 功能都得到支持,并且并非所有 Elastic APM 代理都支持此方法。
在 APM 代理文档中查找更多有关如何将 OpenTelemetry API 或 SDK 与 Elastic APM 代理结合使用以及支持哪些 OpenTelemetry API 功能的详细信息。
Elastic Stack 原生支持 OpenTelemetry 协议 (OTLP)。这意味着由 OpenTelemetry Collector 或 OpenTelemetry 语言 SDK 从您的应用程序和基础设施收集的跟踪数据和指标可以发送到 Elastic Stack。
您可以设置一个 OpenTelemetry Collector,使用将数据发送到 Collector 的 OpenTelemetry 语言 SDK 来仪器化您的应用程序,并使用 Collector 处理和导出数据到 APM Server 或托管的摄入服务。
也可以直接从上游 OpenTelemetry SDK 将数据发送到 APM Server 或托管的摄入服务。您可以在开发期间或监控小型应用程序时这样做。在 OpenTelemetry 文档 中阅读更多关于何时使用 Collector 的信息。
当您需要仪器化 Elastic 未提供解决方案的技术时,此方法效果很好。例如,如果您想仪器化 C 或 C++,可以使用 OpenTelemetry C++ 客户端。
但是,在使用 OpenTelemetry 构建和维护的 Collector 和语言 SDK 时,存在一些限制,包括:
- Elastic 无法提供关于如何使用上游 OpenTelemetry 工具的实现支持。
- 您将无法获得 Elastic 企业 APM 功能。
- 您可能会遇到性能效率问题。
有关使用上游 OpenTelemetry 工具的限制的更多信息,请参阅 限制。
开始使用上游 OpenTelemetry Collector 和语言 SDK →
AWS Lambda 函数可以与 OpenTelemetry 进行仪器化,并由 Elastic Observability 或 Elastic Observability Serverless 进行监控。
要开始,请遵循官方 AWS OpenTelemetry Lambda 发行版文档,并配置 OpenTelemetry Collector 将跟踪和指标输出到您的 Elastic 集群。