Datadog 追蹤
Datadog 追蹤沙盒示範了 Envoy 使用 Datadog 作為追蹤提供者的請求追蹤功能。
此範例包含一個 Datadog 代理,它會將從 Envoy 和上游 HTTP 服務傳送的追蹤轉發到 Datadog 的後端。
envoy
服務在連接埠 10000
上公開,請求流程如下
使用者 ->
envoy
->http
Envoy 代理已配置(envoy.yaml
)以產生追蹤上下文並將其傳播到上游服務,並透過名為 datadog_agent
的 Envoy 叢集向 Datadog 代理報告追蹤資料。
每個 span 都會記錄上游 API 呼叫的延遲,以及將 span 與其他相關 span 關聯所需資訊(例如,追蹤 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 追蹤沙盒。