OpenTelemetry 追蹤
OpenTelemetry 追蹤沙箱展示了 Envoy 使用 OpenTelemetry 作為追蹤提供者的 請求追蹤 功能。
在此範例中,提供了 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 代理都已設定為收集請求追蹤,如其設定中所示,將 OpenTelemetry 追蹤器產生的 span (父/子/共享內容) 傳播到 OpenTelemetry 集群。
每個 span 都會記錄上游 API 呼叫的延遲,以及將 span 與其他相關 span 關聯所需資訊 (例如,追蹤 ID)。
OpenTelemetry 收集器在連接埠 55679
上提供了一個用於檢視收集的追蹤的 Web UI。
步驟 1:建置沙箱
將目錄變更為 Envoy 儲存庫中的 examples/opentelemetry
。
若要建置此沙箱範例,並啟動範例服務,請執行以下命令
$ pwd
envoy/examples/opentelemetry
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------
opentelemetry_envoy-1_1 /docker-entrypoint.sh /usr ... Up 10000/tcp
opentelemetry_envoy-2_1 /docker-entrypoint.sh /usr ... Up 10000/tcp
opentelemetry_envoy-front-proxy_1 /docker-entrypoint.sh /usr ... Up 0.0.0.0:10000->10000/tcp
opentelemetry_opentelemetry_1 /otelcol --config=/etc/ote ... Up (healthy) 4317/tcp, 55678/tcp, 0.0.0.0:55679->55679/tcp
opentelemetry_service-1_1 python3 /code/service.py Up (healthy)
opentelemetry_service-2_1 python3 /code/service.py Up (healthy)
步驟 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:在 OpenTelemetry UI 中檢視追蹤
將您的瀏覽器指向 https://127.0.0.1:55679/debug/tracez。
您應該會看到 OpenTelemetry 儀表板。

在 opentelemetry.proto.collector.trace.v1.TraceService/Export
的 延遲 範例
中,您可以透過按一下 [>0s][>10µs][>100µs][>1ms][>10ms][>100ms][>1s][>10s][>1m40s]
的任何值來探索追蹤。

另請參閱
- 請求追蹤
深入了解如何使用 Envoy 的請求追蹤。
- OpenTelemetry
OpenTelemetry 追蹤網站。