手动
导入OpenTelemetry API和SDK
首先,你需要将OpenTelemetry导入到你的服务代码中。如果你正在开发一个库或其他组件,它的目的是供可运行的二进制文件使用的,那么你只需要依赖API。如果你的构建物是一个独立的进程或服务,那么你需要依赖API和SDK。有关OpenTelemetry API和SDK的更多信息,请参见规范。
配置OpenTelemetry API
为了创建跟踪或度量,你需要先创建一个tracer和/或meter provider。通常情况下,我们建议SDK应该为这些对象提供一个单一的默认provider。然后你将从该provider获取一个tracer或meter实例,并为其命名并指定版本。你在这里选择的名称应该能够标识被仪表化的具体内容。例如,如果你正在编写一个库,那么你应该以你的库命名它(例如com.legitimatebusiness.myLibrary
),因为这个名称将为所有生成的span或度量事件提供命名空间。推荐同时提供一个与库或服务的当前版本相对应的版本字符串(例如semver:1.0.0
)。
配置OpenTelemetry SDK
如果你正在构建一个服务进程,你还需要使用适当的选项配置SDK,以将你的遥测数据导出到某个分析后端。我们建议通过配置文件或其他机制以编程方式处理此配置。你还可以利用每种语言的调整选项。
创建遥测数据
一旦你配置了API和SDK,你就可以自由地通过从provider中获取的tracer和meter对象创建跟踪和度量事件。在处理依赖项时使用Instrumentation Libraries ——查看registry或你所使用语言的存储库,获取更多信息。
导出数据
一旦你创建了遥测数据,你就需要将其发送到某个地方。OpenTelemetry支持从你的进程直接发送数据到分析后端的两种主要方法:直接从进程发送或通过OpenTelemetry Collector进行代理发送。
在进程内导出需要你导入一个或多个_exporters_,这些库将OpenTelemetry的内存中的span和metric对象转换为用于遥测分析工具(如Jaeger或Prometheus)的适当格式。此外,OpenTelemetry支持一种称为OTLP
的传输协议,该协议由所有OpenTelemetry SDK支持。可以使用该协议将数据发送到OpenTelemetry Collector,它是一个独立的二进制进程,可以作为代理或sidecar运行在你的服务实例上或在单独的主机上。然后,可以配置Collector将此数据转发和导出到你选择的分析工具。
除了像Jaeger或Prometheus这样的开源工具,越来越多的公司支持从OpenTelemetry接收遥测数据。有关详细信息,请参见供应商。