Datadog 追踪

注意

在继续之前,请确保您已设置 Datadog 帐户。如果您还没有,您可以 在此注册 Datadog

curl

用于发送 HTTP 请求。

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 跟踪页面。

../../_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 追踪沙盒。