10月8日至10日,与我们相聚纽约,学习关于 GraphQL Federation 和 API 平台工程的最新技巧、趋势和新闻。参加纽约市的 GraphQL Summit 2024
文档
免费开始

路由跟踪

从路由收集跟踪信息


以及支持收集拥有OpenTelemetry,包含以下导出器

生成跨度,包含处理请求和关联依赖的各个阶段。这有助于显示响应时间如何受到以下因素的影响:

  • 子请求响应时间
  • 形状(子请求依赖关系)
  • 后处理

跨度数据发送到诸如Jaeger等收集器,可以将跨度组合成甘特图进行分析。

💡 提示

为了充分利用分布式跟踪,所有系统组件都应该进行仪表化。

跟踪常见配置

跟踪的常见配置包含所有导出器的全局设置。

服务名称

为您的router跟踪设置一个服务名称,以便您可以在外部指标仪表板上轻松定位它们。

服务名称可以通过环境变量或以下顺序设置:

  1. OTEL_SERVICE_NAME环境变量

  2. OTEL_RESOURCE_ATTRIBUTES环境变量

  3. telemetry.exporters.tracing.common.service_namerouter.yaml

  1. telemetry.exporters.tracing.common.resourcerouter.yaml 中:

如果服务名称未显式设置,默认为 unknown_service:routerunknown_service(如果无法确定可执行程序的名称)。

资源

资源属性是提供额外信息给导出器的一组键值对。应用性能监控器(APM)可能会解析和显示资源信息。

router.yaml 中,资源属性在 telemetry.exporters.tracing.common.resource 中设置。例如:

有关 OpenTelemetry 的资源约定,请参阅 资源语义约定

采样率

您可以为跟踪配置采样率以匹配应用程序性能监控器(APM)的速率。要启用采样配置,在 router.yaml 中设置 telemetry.exporters.tracing.common.samplertelemetry.exporters.tracing.common.parent_based_sampler

传播

telemetry.exporters.tracing.propagation 部分允许您配置除了使用导出器自动激活的传播器之外,还激活哪些传播器。

通常情况下,仅当您使用支持多种跟踪ID格式的导出器时,才需要指定显式的传播,例如OpenTelemetry Collector、Jaeger或OpenTracing兼容的导出器。

例如

router.yaml
telemetry:
exporters:
tracing:
propagation:
# https://www.w3.org/TR/baggage/
baggage: false
# https://www.datadoghq.com/
datadog: false
# https://jaeger.golang.ac.cn/ (compliant with opentracing)
jaeger: false
# https://www.w3.org/TR/trace-context/
trace_context: false
# https://zipkin.io/ (compliant with opentracing)
zipkin: false
# https://aws.amazon.com/xray/ (compliant with opentracing)
aws_xray: false
# If you have your own way to generate a trace id and you want to pass it via a custom request header
request:
header_name: my-trace-id

限制

您可以对跟踪设置限制,以防止向您的APM发送过多的数据。例如

router.yaml
telemetry:
exporters:
tracing:
common:
max_attributes_per_event: 128
max_attributes_per_link: 128
max_attributes_per_span: 128
max_events_per_span: 128
max_links_per_span: 128

超过限制的属性、事件和链接将被静默丢弃。

max_attributes_per_event

事件用来描述在跟踪上下文中发生的某个事物。例如,一个异常或发送的消息。这些事件可以具有作为键值对的属性,提供通过APM显示的附加信息。

跟踪可能链接到相同或不同跟踪中的其他跟踪。例如,一个跟踪可能链接到一个父跟踪,或者一个跟踪可能链接到另一个跟踪中的跟踪,以表示该跟踪的父跟踪。这些链接可以具有作为键值对的属性,提供通过APM显示的附加信息。

max_attributes_per_span

跟踪用于在跟踪上下文中描述活动。例如,对一个或一个的请求。跟踪可以具有键值对形式的属性,提供通过APM显示的附加信息。

max_events_per_span

跟踪可以具有描述跟踪上下文中发生的事物的事件。例如,一个异常或发送的消息。每个跟踪的事件数量可以受到限制,以防止跟踪变得非常大。

跟踪可以链接到相同或不同跟踪中的其他跟踪。例如,一个跟踪可能链接到一个父跟踪,或者一个跟踪可能链接到另一个跟踪中的跟踪,以表示该跟踪的父跟踪。每个跟踪的链接数量可以受到限制,以防止跟踪变得非常大。

experimental_response_trace_id

此功能是 实验性的。您的疑问和反馈备受珍视不要犹豫,联系您的Apollo联系人. 您还可以在GitHub上的讨论上发表反馈。

如果您想在响应头中公开生成的跟踪ID或您使用传播头提供的跟踪ID,则可以使用此配置

router.yaml
telemetry:
exporters:
tracing:
experimental_response_trace_id:
enabled: true # default: false
header_name: "my-trace-id" # default: "apollo-trace-id"

使用此配置,您将拥有一个名为my-trace-id的响应头,其中包含跟踪ID。如果您想使用此跟踪ID来grep日志以获得更多上下文,这可能有助于您调试特定的

experimental_response_trace_id参考

属性默认值描述
enabledfalse设置为true以返回响应头上方的跟踪ID。
header_nameapollo-trace-id响应头的名称。

跟踪通用参考

属性默认值描述
service_nameunknown_service:routerOpenTelemetry服务名称。
service_namespaceThe OpenTelemetry namespace.
资源The OpenTelemetry resource to attach to traces.
experimental_response_trace_id在响应头中返回追踪ID。
max_attributes_per_event128每个事件的最大属性数量。
max_attributes_per_link128每个链接的最大属性数量。
max_attributes_per_span128每个Span的最大属性数量。
max_events_per_span128每个Span的最大事件数量。
max_links_per_span128每个Span的最大链接数量。
上一页
Prometheus
下一页
Datadog
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司