乌克兰国旗 我们与乌克兰的朋友和同事站在一起。如需支持正处于困境中的乌克兰,请访问此页面。访问此页面

API

版本  2.6 最新 前往最新的 1.x 版本

Jaeger 支持各种用于保存或检索追踪数据的 API。

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

  • 稳定(stable) - 此 API 保证向后兼容。如果将来会进行破坏性更改,则将产生新的 API 版本,例如 /api/v2 URL 前缀或 IDL 中的不同命名空间。
  • 内部(internal) - 此 API 用于 Jaeger 组件之间的内部通信,不推荐由外部组件使用。
  • 已弃用(deprecated) - 此 API 仅出于向后兼容原因而维护,未来将被逐步淘汰。

默认端口

下表列出了 Jaeger 组件使用的默认端口。用户可以通过配置覆盖它们。

写入 API

端口协议端点格式
4317gRPCExportTraceServiceRequestOTLP Protobuf
4318HTTP/v1/tracesOTLP Protobuf 或 OTLP JSON
6831UDP原始端口Legacy Thrift 在 compact Thrift 协议中
6832UDP原始端口Legacy Thrift 在 binary Thrift 协议中
9411HTTP/api/v1/spansZipkin v1 JSON 或 Thrift
HTTP/api/v2/spansZipkin v2 JSON 或 Protobuf
14250gRPCjaeger.api_v2.CollectorServiceLegacy Protobuf
14268HTTP/api/tracesLegacy Thrift

读取 API

端口协议端点格式
16685gRPCjaeger.api_v3.QueryService基于 OTLP 的 Protobuf
gRPCjaeger.api_v2.QueryServiceLegacy Protobuf
16686HTTP/api/v3/*基于 OTLP 的 JSON over HTTP
HTTP/api/*内部(非官方)JSON API

远程采样 API

端口协议端点格式
5778HTTP/samplingsampling.protoexternal link - Jaeger 分布式追踪平台 via Protobuf 到 JSON 映射external link - Jaeger 分布式追踪平台
5779gRPCjaeger.api_v2.SamplingManagerProtobuf

追踪接收 API

Jaeger 可以在不同的端口以多种格式接收追踪数据。

OpenTelemetry 协议

状态:稳定

Jaeger 可以从 OpenTelemetry SDK 接收原生格式的追踪数据 OpenTelemetry 协议 (OTLP)external link - Jaeger 分布式追踪平台。OTLP 数据接受以下格式

只接受追踪数据,因为 Jaeger 不存储其他遥测类型。有关 OTLP 接收器的更多详细信息,请参阅官方文档。官方文档external link - Jaeger 分布式追踪平台

Legacy Protobuf via gRPC

状态:稳定,已弃用

Jaeger 的 Legacy Protobuf 格式在 collector.protoexternal link - Jaeger 分布式追踪平台 IDL 文件中定义。对这种格式的支持已从 OpenTelemetry SDK 中移除,仅为向后兼容而维护。

Legacy Thrift over HTTP

状态:稳定,已弃用

Jaeger 的 Legacy Thrift 格式在 jaeger.thriftexternal link - Jaeger 分布式追踪平台 IDL 文件中定义,仅为向后兼容而维护。Thrift 负载可以通过 HTTP POST 请求提交到 /api/traces 端点,例如 https://jaeger-collector:14268/api/tracesBatch 结构需要使用 Thrift 的 binary 编码,并且 HTTP 请求应指定 content type header

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

Legacy Thrift over UDP

状态:稳定,已弃用

此 API 保留是为了与旧版 Jaeger 客户端向后兼容。

主要 API 是一个 UDP 包,其中包含在 [jaeger-idl] 仓库中的 jaeger.thriftexternal link - Jaeger 分布式追踪平台 IDL 文件中定义的 Thrift 编码的 Batch 结构。大多数 Jaeger 客户端使用 Thrift 的 compact 编码,但一些客户端库(特别是 Node.js)不支持它,并使用 Thrift 的 binary 编码(发送到不同的 UDP 端口)。

Zipkin 格式

状态:稳定

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

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

追踪检索 API

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

Protobuf via gRPC 查询

状态:稳定

通过编程方式检索追踪数据和其他数据的推荐方法是通过 api_v3/query_service.protoexternal link - Jaeger 分布式追踪平台 IDL 文件中定义的 jaeger.api_v3.QueryService gRPC 端点。在默认配置中,此端点可通过端口 :16685 访问。遗留的 api_v2external link - Jaeger 分布式追踪平台 也受支持。

JSON over HTTP 查询

状态:稳定

这是上面 api_v3/query_service.protoexternal link - Jaeger 分布式追踪平台 的 JSON/HTTP 版本(参见 Swaggerexternal link - Jaeger 分布式追踪平台 文件)。

内部 HTTP JSON

状态:内部

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

远程存储 API

状态:稳定

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

远程采样配置

状态:稳定

此 API 支持 Jaeger 的远程采样协议,该协议在 sampling.protoexternal link - Jaeger 分布式追踪平台 IDL 文件中定义。有关如何使用采样策略配置 Jaeger 的详细信息,请参阅远程采样

服务依赖图

状态:内部

可以从 /api/dependencies 端点检索。GET 请求期望两个参数

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

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

对于对服务图进行编程访问,建议的 API 是上面描述的 gRPC/Protobuf。

服务性能监控

状态:内部

请参阅SPM 文档

gRPC 服务器自省

提供 gRPC 端点的服务端口启用 gRPC reflectionexternal link - Jaeger 分布式追踪平台。不幸的是,内部使用的 gogo/protobuf 与官方的 golang/protobuf 存在兼容性问题external link - Jaeger 分布式追踪平台,因此目前只有 list reflection 命令正常工作,例如

grpc_cli ls localhost:16685
  grpc.health.v1.Health
  grpc.reflection.v1.ServerReflection
  grpc.reflection.v1alpha.ServerReflection
  jaeger.api_v2.QueryService
  jaeger.api_v2.metrics.MetricsQueryService
  jaeger.api_v3.QueryService