代码方式
导入 OpenTelemetry API 和 SDK
您首先需要将 OpenTelemetry 导入到您的服务代码中。如果您正在开发一个库或其他 intended to be consumed by a runnable binary 的组件,那么您只需要依赖 API。如果您的 artifact 是一个独立的进程或服务,那么您将依赖 API 和 SDK。有关 OpenTelemetry API 和 SDK 的更多信息,请参阅 规范。
配置 OpenTelemetry API
为了创建 trace 或 metrics,您需要首先创建一个 tracer 和/或 meter provider。通常,我们建议 SDK 为这些对象提供一个默认的 provider。然后,您将从该 provider 获取 tracer 或 meter 实例,并为其命名和版本。您在此处选择的名称应标识正在被遥测的内容——例如,如果您正在编写一个库,则应将其命名为您的库(例如 com.example.myLibrary),因为此名称将为所有生成的 span 或 metric 事件进行命名空间。还建议您提供一个版本字符串(即 semver:1.0.0),该字符串对应于您的库或服务的当前版本。
配置 OpenTelemetry SDK
如果您正在构建一个服务进程,您还需要使用适当的选项配置 SDK,以便将遥测数据导出到某个分析后端。我们建议通过配置文件或其他机制以编程方式处理此配置。此外,还有一些特定于语言的调优选项您可以考虑利用。
创建遥测数据
一旦您配置了 API 和 SDK,您就可以通过从 provider 获取的 tracer 和 meter 对象来创建 trace 和 metric 事件。请充分利用您依赖项的遥测库——有关更多信息,请查看 注册表或您语言的存储库。
导出数据
创建遥测数据后,您需要将其发送到某个地方。OpenTelemetry 支持两种主要方法将数据从您的进程导出到分析后端:直接从进程导出,或通过 OpenTelemetry Collector 代理导出。
进程内导出要求您导入并依赖一个或多个 _exporters_,这些库将 OpenTelemetry 的内存中的 span 和 metric 对象转换为适合 Jaeger 或 Prometheus 等遥测分析工具的格式。此外,OpenTelemetry 支持一种称为 OTLP 的线协议,该协议受所有 OpenTelemetry SDK 支持。该协议可用于将数据发送到 OpenTelemetry Collector,这是一个独立的二进制进程,可以作为服务实例的代理或 sidecar 运行,或者在单独的主机上运行。然后,Collector 可以配置为将此数据转发并导出到您选择的分析工具。
除了 Jaeger 或 Prometheus 等开源工具之外,越来越多的公司支持从 OpenTelemetry 摄入遥测数据。有关详细信息,请参阅 供应商。