Zipkin 追蹤
Zipkin 追蹤沙箱示範了 Envoy 的 請求追蹤 功能,使用 Zipkin 作為追蹤提供者。
在此範例中,提供了 2 個後端服務
service-1
service-2
還提供了 3 個 Envoy 代理,以將請求路由至它們
envoy-front-proxy
(envoy-front-proxy.yaml
)envoy-1
(envoy-1.yaml
)envoy-2
(envoy-2.yaml
)
在這些服務中,只有 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 代理。

您也可以探索 Zipkin 相依性 UI,以檢視節點之間的關聯性和追蹤路徑。
