OpenTelemetry 追踪
OpenTelemetry 追踪沙箱使用 OpenTelemetry 作为追踪提供程序,演示了 Envoy 的 请求追踪 功能。
在本例中,提供了 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
上暴露在 composition
之外。
对于 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 追踪器生成的跨度(父/子/共享上下文)传播到 OpenTelemetry 集群。
每个跨度记录上游 API 调用的延迟以及将跨度与其他相关跨度关联所需的信息(例如,跟踪 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 仪表板。
在 Latency Samples
的 opentelemetry.proto.collector.trace.v1.TraceService/Export
中,您可以通过单击 [>0s][>10µs][>100µs][>1ms][>10ms][>100ms][>1s][>10s][>1m40s]
的任何值来探索跟踪。
另请参见
- 请求追踪
了解有关使用 Envoy 的请求追踪的更多信息。
- OpenTelemetry
OpenTelemetry 追踪网站。