加入我们,于10月8日至10日在纽约市参加活动,了解关于 GraphQL 联邦和 API 平台工程的最新技巧、趋势和新闻。纽约市 GraphQL Summit 2024 欢迎您的参加
文档
免费开始

Datadog 导出器(通过 OTLP)

配置 Datadog 导出器以进行跟踪


启用并配置Datadog以跟踪

有关通用跟踪配置,请参阅路由跟踪配置

OTLP配置

要将跟踪导出到Datadog,通过OTLP,您必须完成以下操作:

  • 配置Datadog代理,以接受OTLP跟踪。
  • 配置,将跟踪发送到Datadog代理。

要配置Datadog代理,将OTLP配置添加到您的datadog.yaml。例如:

datadog.yaml
otlp_config:
receiver:
protocols:
grpc:
endpoint: <dd-agent-ip>:4317

要配置路由器,启用OTLP导出器,并设置endpoint: <datadog-agent-endpoint>。例如:

router.yaml
telemetry:
exporters:
tracing:
otlp:
enabled: true
# Optional endpoint, either 'default' or a URL (Defaults to http://127.0.0.1:4317)
endpoint: "${env.DATADOG_AGENT_HOST}:4317"

有关Datadog配置的更多详细信息,请参阅Datadog代理配置

启用日志关联

要启用Datadog日志关联,您必须将<code class="css-1lvdtfu">dd.trace_id</code>配置在span中显示:

router.yaml
telemetry:
instrumentation:
spans:
mode: spec_compliant
router:
attributes:
dd.trace_id: true

您的JSON格式的日志消息将自动在每条日志消息中输出 dd.trace_id,前提是在 router 段中检测到了 dd.trace_id

ATDatadog原生配置

⚠️ 注意

ATDatadog跟踪不是OpenTelemetry规范的一部分,鉴于Datadog支持OTLP,我们将在未来弃用原生的Datadog跟踪。请使用 OTLP配置

配置 router 可以连接到原生、默认的Datadog代理地址或URL:

router.yaml
telemetry:
exporters:
tracing:
datadog:
enabled: true
# Optional endpoint, either 'default' or a URL (Defaults to http://127.0.0.1:8126)
endpoint: "http://${env.DATADOG_AGENT_HOST}:8126"
# Enable graphql.operation.name attribute on supergraph spans.
instrumentation:
spans:
mode: spec_compliant
supergraph:
attributes:
graphql.operation.name: true

启用

设置为true以启用Datadog导出器。默认为false。

enable_span_mapping(默认:true

存在一些不兼容性 存在于Datadog和OpenTelemetry之间,Datadog导出器可能无法提供有意义的上下文信息。要修复此问题,您可以将 router 配置为执行跨度名称和资源名称的映射。

router.yaml
telemetry:
exporters:
tracing:
datadog:
enabled: true
enable_span_mapping: true

enable_span_mapping: true 时, router 执行以下映射:

  1. 使用OpenTelemetry跨度名称设置Datadog跨度
  2. 使用OpenTelemetry跨度属性设置Datadog跨度资源名称。

示例跟踪

例如,假设一个客户端向 router 发送一个 MyQueryroutermy-subgraph-name 发送一个子图查询并创建以下跟踪:

| apollo_router request |
| apollo_router router |
| apollo_router supergraph |
| apollo_router query_planning | apollo_router execution |
| apollo_router fetch |
| apollo_router subgraph |
| apollo_router subgraph_request |

如你所见,没有关于 查询子图名称以及发送到子图的查询的名称的明确信息。

相反,enable_span_mapping设置为 true 时将创建以下跟踪:

| request /graphql |
| router /graphql |
| supergraph MyQuery |
| query_planning MyQuery | execution |
| fetch fetch |
| subgraph my-subgraph-name |
| subgraph_request MyQuery__my-subgraph-name__0 |

fixed_span_names(默认:true

fixed_span_names: true 时,Apollo router 使用原始跨度名称而不是由OTel语义约定描述的动态名称。

router.yaml
telemetry:
exporters:
tracing:
datadog:
enabled: true
fixed_span_names: true

这将在Datadog的APM视图中为你提供一个有限的操作名称列表。

资源映射

当设置时,resource_mapping 允许您指定要在Datadog APM和跟踪视图中使用的属性。默认的资源映射如下:

OpenTelemetry 标签名称Datadog 标签操作名称
请求http路由
路由器http路由
supergraphgraphql.operation.name
查询规划graphql.operation.name
子图子图名称
子图请求graphql.operation.name
http请求http路由

您可以通过指定 resource_mapping 配置来覆盖这些映射:

router.yaml
telemetry:
exporters:
tracing:
datadog:
enabled: true
resource_mapping:
# Use `my.span.attribute` as the resource name for the `router` span
router: "my.span.attribute"
instrumentation:
spans:
router:
attributes:
# Add a custom attribute to the `router` span
my.span.attribute:
request_header: x-custom-header

如果您在自定义构建的路由器中引入了新的标签,您可以通过将其添加到 resource_mapping 配置中来为其启用资源映射。

标签度量

当设置时, span_metrics 允许您指定哪些标签将在Datadog APM和追踪视图中显示标签度量。默认情况下,标签度量对以下内容启用:

  • 请求
  • 路由器
  • supergraph
  • 子图
  • 子图请求
  • http请求
  • 查询规划
  • 执行
  • 查询解析

您可以通过指定 span_metrics 配置来覆盖这些默认值:

下面的示例将禁用supergraph标签的标签度量。

router.yaml
telemetry:
exporters:
tracing:
datadog:
enabled: true
span_metrics:
# Disable span metrics for supergraph
supergraph: false
# Enable span metrics for my_custom_span
my_custom_span: true

如果您在自定义构建的路由器中引入了新的标签,您可以通过将其添加到 span_metrics 配置中来为其启用标签度量。

批量处理器

所有导出器都支持使用 batch_processor 配置批量标签处理器。

如果您看到以下任何消息在您的日志中,您必须调整 batch_processor 配置:

  • OpenTelemetry 跟踪错误发生:由于通道已满,无法将标签发送到批量标签处理器

  • OpenTelemetry 度量错误发生:由于通道已满,无法将标签发送到批量标签处理器

精确设置取决于您发送数据到应用程序性能监控器(APM)的可用带宽以及您的APM的带宽配置。随着时间的推移,随着应用程序的变化,预计将调整这些设置。

telemetry:
exporters:
tracing:
datadog:
batch_processor:
max_export_batch_size: 512
max_concurrent_exports: 1
max_export_timeout: 30s
max_queue_size: 2048
scheduled_delay: 5s

batch_processor 配置参考

属性默认值描述
scheduled_delay5s从收到第一个标签到发送批次的秒数延迟。
max_concurrent_exports1重叠导出请求的最大数量。
max_export_batch_size512包含在批次中的标签数量。可能受到最大消息大小限制的限制。
max_export_timeout30s在丢弃数据之前发送标签的超时时间(秒)。
max_queue_size2048在丢弃标签数据之前缓冲的标签的最大数量。

Datadog 本地配置参考

属性默认值描述
启用false启用OTLP导出器。
enable_span_mappingfalse如果应使用标签映射。
endpointhttps://127.0.0.1:8126/v0.4/traces要发送标签的端点。
批量处理器批量处理器设置。
资源映射参阅配置标签名称到属性名称的映射。
标签度量参阅配置标签名称到布尔值的映射。
上一页
配置
下一页
Dynatrace
快速浏览文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,简称为Apollo GraphQL。

隐私政策

公司