与我们于10月8日至10日一起在新 York City 畅谈关于 GraphQL 联邦和 API 平台工程的最新的技巧、趋势和新闻。参加 2024 年纽约市的 GraphQL 大会
文档
免费开始

路由遥测

收集可观察数据以监视您的路由和超级图


在本概述中,了解以下内容:

  • 如何的性能监控以及可观测性和调试性
  • 在路由器的日志、指标和跟踪中捕获哪些数据
  • 提供哪些导出器可以将遥测数据传输到您的应用程序性能监控(APM)工具

Router
native or
OTLP
Request Lifecycle
(telemetry sources)
Logs, Metrics,
Traces Exporters
APM, agent,
or collector

通过遥测实现可观测性

您的supergraph的健康状况与您路由器的健康状况一样。因为路由器是访问supergraph的单个入口,所有的客户端请求都会穿过路由器的请求生命周期。任何路由器的问题都可能影响对您的supergraph的所有请求的处理。

诊断您的路由器的健康和性能需要其对内部工作提供可观测性数据。您可以监控和分析更多的可观测性数据,就可以更快地识别不健康的行为,推断出根本原因并实施修复。

路由器提供了监控其健康和解决问题的必要数据。路由器的可观测性对于维护健康、高效supergraph至关重要,并且有助于最小化其平均修复时间(MTTR)

收集您需要的精确遥测

有效的遥测仅提供维持您的所需的信息量和粒度。数据过多可能会淹没系统,例如,高基数指标。数据过少可能无法提供足够的信息来调试问题。

需要捕获的具体事件以及它们需要捕获的条件可能会随着客户端应用程序和的变化而变化。不同的环境,如生产开发和测试环境,可能会有不同的可观测性要求。

遥测可定制以满足不同graphs的可观测性需求。您可以在路由器请求生命周期的不同阶段记录自定义事件,并通过属性创建自定义上下文,以跟踪请求或响应在路由器中的流动。您可以通过批处理遥测等来调整 emitted 遥测的量和速率。

路由器遥测类型

路由器收集不同类型的遥测数据,包括:

这可以帮助您收集有关路由器内部运作的数据,并将日志、指标和跟踪导出到应用程序性能监控(APM)和可观察性工具。

Router
OTLP
OTLP
OTLP
OTLP
native or
OTLP
native
native
scrapes
Request Lifecycle
(telemetry sources)
Logs
Exporter
stdout
Metrics
Exporter
Traces
Exporter
Prometheus
Endpoint
OTLP-enabled APM
(e.g. New Relic)
Zipkin
Datadog agent
APM
OpenTelemetry
Collector
Jaeger
(agent or collector)

日志和事件

日志记录路由器中的事件。已记录的事件示例包括:

  • 关于路由器生命周期的信息
  • 有关配置错误的警告
  • 请求过程中发生的错误

日志可以由日志导出器消费,并通过跨度跟踪导出器消费。

指标和工具

指标是对路由器行为的测量,可以导出和监控。指标的类型包括直方图、仪表和计数。

指标可以通过导出器消费。请参阅指标导出器以了解支持的导出器概述。

单个指标称为仪器。路由器的示例仪器包括:

  • 接收到的请求数量
  • 请求持续时间的直方图
  • 正在传输的请求数量

请参阅仪器以了解可用的仪器,以及配置和自定义仪器的指南。

跟踪和跨度

跟踪监控请求通过路由器的流。跟踪由跨度组成。跨度捕获请求在路由器请求生命周期中的持续时间。跨度可以包括有关请求的上下文信息,例如HTTP状态代码或被查询的名称。

跨度的示例包括

  • router - 从HTTP角度包装整个请求
  • supergraph - 解析GraphQL后包装请求
  • subgraph - 包装对子图的请求。

通过跟踪导出器消费跟踪。

路由器遥测导出器

路由器以与行业标准APM工具兼容的格式导出其收集的遥测数据。路由器支持包括Prometheus、OpenTelemetry Collector、Datadog、New Relic、Jaeger和Zipkin在内的各种工具的日志、指标和跟踪导出器。

  • Prometheus
  • OpenTelemetry Collector
  • Datadog
  • New Relic
  • Jaeger
  • Zipkin

更多信息,请参阅 日志导出器指标导出器追踪导出器

路由遥测属性

您可以使用 属性注解事件、指标和跨度。 角色是键值对,用于向遥测添加有关路由管道的上下文信息。您可以使用这些属性在您的APM中过滤和分组数据。

示例属性包括

  • HTTP状态码
  • GraphQL
  • 名称

您可以使用 标准属性选择器作为跨度属性。

跨度自定义属性需要 专用或企业计划

最佳实践

平衡遥测和路由性能

请注意,您添加的遥测数量可能会影响您的 router's performance.

  • 自定义指标、事件和属性比标准指标消耗更多的处理资源。添加太多(标准或自定义)可能会使您的 router 变慢。
  • 例如,events.*.request|error|response之类的配置,它会产生所有 router 生命周期服务的输出,仅供开发或调试使用,不可用于生产。

对于正确记录的遥测,您应使用 info级别的日志。设置 RUST_LOGAPOLLO_ROUTER_LOG环境变量的值以及 --log CLI 选项为 info。使用较详细的日志记录,如 error,可能会导致某些属性丢失。

上一页
错误信息
下一页
子图错误包含
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,商号为Apollo GraphQL。

隐私政策

公司