Zipkin 追踪

Zipkin 追踪沙箱演示了 Envoy 的 请求跟踪 功能,使用 Zipkin 作为跟踪提供者。

在本示例中,提供了 2 个后端服务

  • service-1

  • service-2

还提供了 3 个 Envoy 代理来将请求路由到它们

在这些服务中,只有 Envoy front-proxy 服务在 composition 之外公开,端口为 10000

对于 service-1,请求根据请求路径 trace/1 进行路由,如下所示

用户 -> Envoy(envoy-front-proxy) -> Envoy(envoy-1) -> service-1

对于 service-2,请求根据请求路径 trace/2 进行路由,如下所示

用户 -> Envoy(envoy-front-proxy) -> Envoy(envoy-1) -> Envoy(envoy-2) -> service-2

所有 Envoy 代理都配置为收集请求跟踪,如其配置中所示,将 Zipkin 跟踪器生成的跨度(父/子/共享上下文)传播到 Zipkin 集群。

每个跨度记录上游 API 调用的延迟,以及将跨度与其他相关跨度相关联所需的信息(例如,跟踪 ID)。

Zipkin 收集器提供一个 Web UI,用于在端口 9411 上查看收集的跟踪。

步骤 1:构建沙箱

将目录更改为 Envoy 仓库中的 examples/zipkin

要构建此沙箱示例并启动示例服务,请运行以下命令

$ pwd
envoy/examples/zipkin
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps

            Name                          Command             State            Ports
-----------------------------------------------------------------------------------------------------------
zipkin_envoy-1_1             /docker-entrypoint.sh /usr ... Up             10000/tcp
zipkin_envoy-2_1             /docker-entrypoint.sh /usr ... Up             10000/tcp
zipkin_envoy-front-proxy_1   /docker-entrypoint.sh /usr ... Up             0.0.0.0:10000->10000/tcp
zipkin_service-1_1           python3 /code/service.py       Up (healthy)
zipkin_service-2_1           python3 /code/service.py       Up (healthy)
zipkin_zipkin_1              start-zipkin                   Up (healthy)   9410/tcp, 0.0.0.0:9411->9411/tcp

步骤 2:向 service-1 发送请求

现在通过调用 https://127.0.0.1:10000/trace/1,向 service-1 发送请求。

这将通过 2 个 Envoy 代理进行路由

  • front-proxy

  • envoy-1

$ curl localhost:10000/trace/1
Hello from behind Envoy (service 1)!

步骤 3:向 service-2 发送请求

现在通过调用 https://127.0.0.1:10000/trace/2,向 service-2 发送请求。

这将通过所有 3 个 Envoy 代理进行路由

  • front-proxy

  • envoy-1

  • envoy-2

$ curl localhost:10000/trace/2
Hello from behind Envoy (service 2)!

步骤 4:在 Zipkin UI 中查看跟踪

将您的浏览器指向 https://127.0.0.1:9411

您应该看到 Zipkin 仪表板。

点击 RUN QUERY 按钮,并通过点击 EXPAND ALL 展开跟踪。

在这里,您可以探索请求所采取的路径,以及每个跃点的延迟以及其他上下文信息。

请注意,Zipkin 通过引导程序 node/cluster 配置中提供的名称来标识 Envoy 代理。

../../_images/zipkin-ui.png

您还可以探索 Zipkin 依赖项 UI 来查看节点之间的关系以及跟踪的路径。

../../_images/zipkin-ui-dependency.png

另请参阅

请求跟踪

了解有关使用 Envoy 的请求跟踪的更多信息。

Zipkin

Zipkin 追踪网站。