Datadog 追蹤

注意

在繼續之前,請確保您已設定 Datadog 帳戶。如果您還沒有帳戶,您可以在這裡註冊 Datadog

curl

用於發出 HTTP 請求。

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 追蹤頁面。

../../_images/datadog-ui-landing.png

按一下任何服務名稱為 envoy 的追蹤。從這裡,您可以探索請求所採取的路徑,以及每個跳轉所產生的延遲和其他上下文資訊。

../../_images/datadog-ui-trace.png

請注意,Datadog 追蹤器會根據 tracing.provider.typed_config.service_name 組態中提供的名稱識別 Envoy 代理。

您也可以探索地圖圖表,以檢視節點之間的關係以及追蹤的路徑。

../../_images/datadog-ui-map.png

另請參閱

請求追蹤

進一步了解如何使用 Envoy 的請求追蹤。

Datadog

Datadog 網站。

OpenTelemetry 追蹤

OpenTelemetry 追蹤沙盒。