Datadog 追踪
Datadog 追踪沙盒演示了 Envoy 的 请求跟踪 功能,使用 Datadog 作为跟踪提供者。
此示例包括一个 Datadog 代理,它将转发 Envoy 和上游 HTTP 服务发送到 Datadog 后端的跟踪。
The envoy
服务在端口 10000
上公开,请求流如下
用户 ->
envoy
->http
Envoy 代理配置 (envoy.yaml
) 以生成和传播跟踪上下文到上游服务,并通过名为 datadog_agent
的 Envoy 集群向 Datadog 代理报告跟踪数据。
每个跨度记录上游 API 调用的延迟以及将跨度与其他相关跨度关联所需的信息(例如,跟踪 ID)。
步骤 1:构建沙盒
更改到 Envoy 存储库中 examples/datadog-tracing
目录。
要构建此沙盒示例,并启动示例服务,请运行以下命令
$ pwd
envoy/examples/datadog-tracing
$ export DD_API_KEY=<YOUR_API_KEY>
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------
datadog-tracing-dd-agent-1 "/bin/entrypoint.sh" running 8125/udp, 0.0.0.0:8126->8126/tcp
datadog-tracing-envoy-1 "/docker-entrypoint.…" running 10000/tcp, 0.0.0.0:10000->1337/tcp
datadog-tracing-http-1 "node --require dd-t…" running 0.0.0.0:8080->8080/tcp
步骤 2:向 http
发送请求
现在通过调用 https://127.0.0.1:10000 向 HTTP 服务发送请求。
$ curl localhost:10000
{
"service": "http",
"headers": {
"host": "localhost:10000",
"user-agent": "curl/7.81.0",
"accept": "*/*",
"x-forwarded-for": "172.16.14.142",
"x-forwarded-proto": "http",
"x-envoy-internal": "true",
"x-request-id": "cfa52b85-8660-9532-b347-bd484da76166",
"x-envoy-expected-rq-timeout-ms": "15000",
"x-foobar-banana": "",
"x-datadog-trace-id": "13944358220549386131",
"x-datadog-parent-id": "13944358220549386131",
"x-datadog-sampling-priority": "1",
"x-datadog-tags": "_dd.p.tid=663fe98600000000,_dd.p.dm=-0",
"traceparent": "00-663fe98600000000c1844febd4a4ef93-c1844febd4a4ef93-01",
"tracestate": "dd=s:1;t.dm:-0"
}
}
步骤 3:在 Datadog UI 中查看跟踪
登录您的 Datadog 帐户并导航到 APM 跟踪页面。
单击任何具有服务名称 envoy
的跟踪。在这里,您可以探索请求所经过的路径,以及每个跳跃的延迟和其他上下文信息。
请注意,Datadog 追踪器通过 tracing.provider.typed_config.service_name
配置中提供的名称来识别 Envoy 代理。
您还可以探索映射图以查看节点之间的关系和跟踪的路径。
另请参阅
- 请求跟踪
了解有关使用 Envoy 的请求跟踪的更多信息。
- Datadog
Datadog 网站。
- OpenTelemetry 追踪
OpenTelemetry 追踪沙盒。