注意

本文档适用于 Ceph 的开发版本。

JAEGER- 分布式跟踪

Jaeger 为分布式系统提供即用型跟踪服务。

基本架构和术语

  • 跟踪 (TRACE):跟踪显示通过系统的数据/执行路径。

  • 跨度 (SPAN):跟踪的单个单元。一种数据结构,存储操作名称、时间戳以及跟踪中的顺序等信息。

  • JAEGER 客户端 (JAEGER CLIENT):OpenTracing API 的特定语言实现。

  • JAEGER 代理 (JAEGER AGENT):一个侦听通过用户数据报协议发送的跨度的守护进程。代理旨在放置在与被检测应用程序相同的主机上。(Jaeger 代理充当 sidecar 侦听器。)

  • JAEGER 收集器 (JAEGER COLLECTOR):一个接收由 Jaeger 代理发送的跨度的守护进程。然后,Jaeger 收集器将跨度拼接在一起形成一个跟踪。(可以启用数据库来持久化这些跟踪)。

  • JAEGER 查询和控制台前端 (JAEGER QUERY AND CONSOLE FRONTEND):基于 UI 的前端,用于显示 jaeger 跟踪报告。可通过 http://<jaeger frontend host>:16686 访问。

阅读有关 jaeger 跟踪的更多信息:。

JAEGER 部署

Jaeger 可以使用 cephadm 或手动部署。

基于 CEPHADM 的服务部署

Cephadm Jaeger 服务部署

JAEGER OPENTELEMETRY 一体化容器的手动测试部署

对于单节点测试,可以使用以下方式部署 Jaeger opentelemetry

 docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-e COLLECTOR_OTLP_ENABLED=true \
-p 6799:6799/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
-p 14250:14250 \
-p 14268:14268 \
-p 14269:14269 \
-p 9411:9411 \
jaegertracing/all-in-one:latest --processor.jaeger-compact.server-host-port=6799

Jaeger 部署

Jaeger 性能调优

注意

Jaeger 代理必须在每个主机上运行(并且不能以一体化模式运行)。这是因为跨度被发送到本地 Jaeger 代理。没有活动的 Jaeger 代理的主机的跨度将会丢失。

Jaeger 代理的默认配置端口与官方默认端口 6831 不同,因为 Ceph 跟踪器配置为将跟踪器发送到侦听配置端口 6799 的代理。对于手动 Jaeger 部署,请使用选项 “--processor.jaeger-compact.server-host-port=6799”。

如何在 CEPH 中启用跟踪

Ceph 中的跟踪默认禁用。

可以全局启用跟踪,也可以为每个实体(例如 rgw)单独启用跟踪。

全局启用跟踪

ceph config set global jaeger_tracing_enable true

为每个实体启用跟踪

ceph config set <entity> jaeger_tracing_enable true

RGW 中的跟踪

在 RGW 上运行的跟踪可以在 Jaeger 前端中的服务 rgw 下找到。

请求

每个用户请求都会被跟踪。每个跟踪都包含 Operation nameUser idObject nameBucket name 的标签。

对于分段上传操作,还有一个 Upload id 标签。

请求跟踪的名称格式如下:<command> <transaction id>

分段上传

有一种跟踪由分段上传所做的每个请求的跨度组成,它包括所有 Put Object 请求。

分段跟踪的名称格式如下:multipart_upload <upload id>

Jaeger 前端中的 rgw 服务

../_images/rgw_jaeger.png

Jaeger 前端中的 osd 服务

../_images/osd_jaeger.png

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入