Zipkin 追蹤

Zipkin 追蹤沙箱示範了 Envoy 的 請求追蹤 功能,使用 Zipkin 作為追蹤提供者。

在此範例中,提供了 2 個後端服務

  • service-1

  • service-2

還提供了 3 個 Envoy 代理,以將請求路由至它們

在這些服務中,只有 Envoy front-proxy 服務在 組合 之外公開,並在連接埠 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 發出請求

現在向 service-1 發出請求,方法是呼叫 https://127.0.0.1:10000/trace/1

這將透過 2 個 Envoy 代理進行路由

  • front-proxy

  • envoy-1

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

步驟 3:向 service-2 發出請求

現在向 service-2 發出請求,方法是呼叫 https://127.0.0.1:10000/trace/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 追蹤網站。