乌克兰国旗 我们与我们在乌克兰的朋友和同事站在一起。为支持乌克兰度过困难时期,请访问此页面

API

版本  1.69 最新 前往最新的 2.x 版本

Jaeger 组件实现了各种 API 用于保存或检索追踪数据。

以下标签用于描述 API 兼容性保证。

  • stable - 此 API 保证向后兼容。如果将来会进行破坏性更改,将导致新的 API 版本,例如 URL 前缀变为 /api/v2 或 IDL 中使用不同的命名空间。
  • internal - 这些 API 用于 Jaeger 组件之间的内部通信,不建议外部组件使用。
  • deprecated - 这些 API 仅因兼容遗留系统而维护,将来会被逐步淘汰。

自 Jaeger v1.32 起,服务 gRPC 端点的 jaeger-collectorjaeger-query 服务端口启用了gRPC 反射external link - Jaeger 分布式追踪平台。不幸的是,内部使用的 gogo/protobuf 与官方的 golang/protobuf 存在兼容性问题external link - Jaeger 分布式追踪平台,因此目前只有 list 反射命令正常工作。

Span 上报 API

jaeger-collector 是 Jaeger 后端用于接收 span 的组件。目前它支持两组不重叠的 API。

OpenTelemetry Protocol (稳定)

自 v1.35 起,Jaeger 后端可以接收 OpenTelemetry SDK 以其原生OpenTelemetry Protocol (OTLP)external link - Jaeger 分布式追踪平台 格式发送的追踪数据。不再需要使用 Jaeger exporter 配置 OpenTelemetry SDK,也不需要在 OpenTelemetry SDK 和 Jaeger 后端之间部署 OpenTelemetry Collector。

OTLP 数据支持以下格式接收:(1) 二进制 gRPC,(2) Protobuf over HTTP,(3) JSON over HTTP。有关 OTLP 接收器的更多详细信息,请参阅官方文档external link - Jaeger 分布式追踪平台。请注意,并非所有配置选项都在 jaeger-collector 中受支持(参阅 --collector.otlp.* CLI 标志),且只接受追踪数据,因为 Jaeger 不存储其他类型的遥测数据。

端口协议端点格式
4317gRPC不适用Protobuf
4318HTTP/v1/tracesProtobuf 或 JSON

Protobuf via gRPC (稳定)

已弃用:我们推荐使用 OpenTelemetry 协议。

自 Jaeger v1.11 起,用户应用程序与 jaeger-collector 之间的官方协议是 collector.protoexternal link - Jaeger 分布式追踪平台 IDL 文件中定义的 jaeger.api_v2.CollectorService gRPC 端点。同一个端点可用于将 SDK 中的追踪数据直接提交到 jaeger-collector

Thrift over HTTP (稳定)

已弃用:我们推荐使用 OpenTelemetry 协议。

jaeger.thriftexternal link - Jaeger 分布式追踪平台 格式承载的数据可以通过 HTTP POST 请求提交到 /api/traces 端点,例如 https://jaeger-collector:14268/api/tracesBatch 结构体需要使用 Thrift 的 binary 编码进行编码,并且 HTTP 请求应指定内容类型头。

Content-Type: application/vnd.apache.thrift.binary

JSON over HTTP (不适用)

jaeger-collector 没有官方接受的 Jaeger JSON 格式。Jaeger 确实支持通过 JSON 接收 OpenTelemetry 协议数据(参阅上文)。

Zipkin 格式 (稳定)

jaeger-collector 也可以接收几种 Zipkin 数据格式的 span,即 JSON v1/v2 和 Thrift。需要配置 jaeger-collector 以启用 Zipkin HTTP 服务器,例如在 Zipkin collector 使用的端口 9411 上。该服务器启用了两个接受 POST 请求的端点:

  • /api/v1/spans 用于提交 Zipkin JSON v1 或 Zipkin Thrift 格式的 span。
  • /api/v2/spans 用于提交 Zipkin JSON v2 格式的 span。

追踪检索 API

保存在存储中的追踪可以通过调用 jaeger-query 服务来检索。

gRPC/Protobuf (稳定)

通过编程方式检索追踪和其他数据的推荐方式是使用 query.protoexternal link - Jaeger 分布式追踪平台 IDL 文件中定义的 jaeger.api_v2.QueryService gRPC 端点。在默认配置下,该端点可通过 jaeger-query:16685 访问。

HTTP JSON (内部)

Jaeger UI 通过 JSON API 与 jaeger-query 服务通信。例如,可以通过向 https://jaeger-query:16686/api/traces/{trace-id-hex-string} 发送 GET 请求来检索追踪。此 JSON API 特意未文档化,并且可能会更改。

远程存储 API (稳定)

使用 grpc 存储类型(也称为远程存储)时,只要自定义存储后端实现了 gRPC 远程存储 APIexternal link - Jaeger 分布式追踪平台,Jaeger 组件就可以使用它们。

远程采样配置 (稳定)

此 API 支持 Jaeger 的远程采样协议,该协议定义在 sampling.protoexternal link - Jaeger 分布式追踪平台 IDL 文件中。

jaeger-collector 实现了此 API。有关如何使用采样策略配置 Collector 的详细信息,请参阅远程采样

下表列出了可用于查询采样策略的不同端点和格式。官方的 HTTP/JSON 端点使用标准的Protobuf 到 JSON 映射external link - Jaeger 分布式追踪平台

组件端口端点格式备注
Collector14268/api/samplingHTTP/JSON推荐用于大多数 SDK
Collector14250sampling.protoexternal link - Jaeger 分布式追踪平台gRPC对于希望使用 gRPC 的 SDK(例如 OpenTelemetry Java SDK)

示例

在一个终端中运行 all-in-one

$ go run ./cmd/all-in-one \
  --sampling.strategies-file=cmd/all-in-one/sampling_strategies.json

在另一个终端中查询端点

$ curl "http://localhost:14268/api/sampling?service=foo"
{"strategyType":"PROBABILISTIC","probabilisticSampling":{"samplingRate":1}}

服务依赖图 (内部)

可以从 jaeger-query 服务通过 /api/dependencies 端点检索。GET 请求需要两个参数:

  • endTs(自 epoch 以来的毫秒数) - 时间间隔的结束时间
  • lookback(毫秒) - 时间间隔的长度(即 start-time + lookback = end-time)。

返回的 JSON 是一个边列表,表示为元组 (caller, callee, count)

对于服务图的编程访问,推荐的 API 是上面描述的 gRPC/Protobuf。

服务性能监控 (内部)

请参阅SPM 文档