组件
OpenTelemetry 目前包括以下几个主要组件:
OpenTelemetry 可让您摆脱特定供应商的 SDK 和工具,生成和导出遥测数据。
规范
描述了所有实现的跨语言要求和期望。除了定义术语外,规范还定义了以下内容:
- API: 为生成和关联跟踪、度量和日志数据定义了数据类型和操作。
- SDK: 为 API 的特定语言实现定义了要求。此处还定义了配置、数据处理和导出的概念。
- 数据: 定义了 OpenTelemetry 协议(OTLP)和供应商无关的语义约定,遥测后端可以提供对其的支持。
有关更多信息,请参阅规范。
收集器
OpenTelemetry 收集器是一个供应商无关的代理器,可以接收、处理和导出遥测数据。它支持以多种格式(例如 OTLP、Jaeger、Prometheus 以及许多商业/专有工具)接收遥测数据,并将数据发送到一个或多个后端。它还支持在导出之前处理和过滤遥测数据。
有关更多信息,请参阅收集器。
特定语言的 API & SDK 实现
OpenTelemetry 还提供了针对特定语言的 SDK,让您可以使用 OpenTelemetry API 使用您选择的语言生成遥测数据,并将该数据导出到首选的后端。这些 SDK 还允许您将仪表库与常见库和框架一起使用,这些库和框架可以用于连接到应用程序中的手动仪表化。
有关更多信息,请参阅仪表化。
仪表库
OpenTelemetry 支持从受支持语言的流行库和框架生成相关遥测数据的大量组件。例如,来自一个 HTTP 库的入站和出站 HTTP 请求将生成有关这些请求的数据。
长期目标是编写流行库以使其开箱即用,无需额外组件。
有关更多信息,请参阅仪表化库。
导出器
In order to visualize and analyze your telemetry, you will need to export your data to an OpenTelemetry Collector or a backend such as Jaeger, Zipkin, Prometheus or a vendor-specific one.
As part of the language specific implementations you will find many exporters being available. Among them, the OpenTelemetry Protocol (OTLP) exporters provide the best experience for you as an end-user, since it is a general-purpose telemetry data delivery protocol designed in the scope of the OpenTelemetry project.
To learn more about the OTLP protocol, you can read the OTLP Specification.
自动仪表化
如果适用,OpenTelemetry 的特定语言实现将提供一种在不修改源代码的情况下为您的应用程序打点的方法。虽然底层机制取决于语言,但至少会添加 OpenTelemetry API 和 SDK 功能到您的应用程序中。还可以添加一组仪表库和导出器依赖项。
有关更多信息,请参阅仪表化。
资源探测器
资源表示作为资源属性生成遥测数据的实体。例如,在 Kubernetes 上运行的生成遥测数据的进程具有 Pod 名称、命名空间和可能的部署名称。这三个属性都可以包含在资源中。
OpenTelemetry 的特定语言实现通过环境变量 OTEL_RESOURCE_ATTRIBUTES
从环境中检测资源,并提供了许多常见实体的资源探测,例如进程运行时、服务、主机或操作系统。
有关更多信息,请参阅资源。
跨服务传播器
传播是将数据在服务和进程之间移动的机制。尽管不限于跟踪,但它允许跟踪在跨进程和网络边界的任意分布的服务之间构建因果信息。
对于绝大多数用例,上下文传播是通过仪表库自动完成的。但是,如果需要,您可以自己使用 传播器
进行序列化和反序列化横切关注点,例如跨度和航材的上下文。
采样器
采样是限制系统生成的跟踪量的过程。特定语言的实现提供了几个头采样器
有关更多信息,请参阅采样。
K8s 运算符
OpenTelemetry 运算符是 Kubernetes 运算符的一种实现。该运算符管理 OpenTelemetry 收集器,并使用 OpenTelemetry 对工作负载进行自动仪表化。
有关更多信息,请参阅K8s 运算符。
函数即服务资产
OpenTelemetry 支持不同云供应商提供的监控函数即服务的各种方法。OpenTelemetry 社区目前提供了预构建的 Lambda layer,能够自动仪表化您的应用程序,还提供了用于手动或自动仪表化应用程序时可以使用的独立 Collector Lambda layer。
有关更多信息,请参阅函数即服务。