于10月8日至10日在纽约市与我们会面,了解GraphQL联邦和API平台工程的最新技巧、趋势和新闻。参加2024年纽约市GraphQL峰会
文档
免费开始

使用OpenTelemetry将GraphOS路由跟踪和指标发送到APM工具

深入了解您图性能和稳定性

可观测性路由器

自托管仅限于GraphOS企业版计划。其他计划类型使用GraphOS管理的云路由。查看定价页面以了解详情。

💡 提示

如果您是企业客户,想了解更多关于这个主题的内容,请尝试学习 企业最佳实践:Supergraph 可观测性 中的课程。 .

您不是企业客户?了解 GraphOS 企业版。

应用性能监控 (APM) 工具对于许多组织至关重要,直接了解您的 性能是系统稳定性和性能的整体可观测性的一部分重要内容。GraphOS 路由器以及 并无不同。虽然您可能已经用 APM 工具对现有的子图进行了功能实现,但为了清楚地了解您图的运行状况,您可能还需要连接路由器。

幸运的是,有办法将这两款软件连接在一起: OpenTelemetry。我们之前讨论过利用 OpenTelemetry 连接到 Prometheus,同样的方法也适用于此用例。

使用 OpenTelemetry 有两种方法可以将 连接到您的 APM:

  • 使用 OpenTelemetry 收集器
  • 直接连接

在我们的示例中,我们将连接到 New Relic,但这也适用于任何支持 OpenTelemetry 作为输入选项的 APM,例如 Honeycomb 或 Dynatrace。

我们建议使用 OpenTelemetry 收集器将 router度量标准发送到您的 APM 工具,以下是一些原因:

  • 收集器提供了当运行多个 router 实例时的集中式报告器。
  • 收集器使您能够将指标处理并发送到除 APM 工具以外的多个位置,例如本地 Prometheus 实例。

您需要一个 OpenTelemetry 收集器 的实例来将其导出到您的 APM 工具。基本配置需要 OpenTelemetry 协议 (OTLP) 接收器(用于路由器)和导出器(用于转发到您的 APM 工具)。

此外,我们建议添加批处理 处理器以启用每个导出器上的批量请求。

以下是一个针对 New Relic 的示例收集器配置

collector-config.yaml
receivers:
otlp:
protocols:
grpc:
http:
cors:
allowed_origins:
- http://*
- https://*
exporters:
otlp:
endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT}
headers:
api-key: ${NEW_RELIC_LICENSE_KEY}
processors:
batch:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [otlp]
processors: [batch]
metrics:
receivers: [otlp]
exporters: [otlp]
processors: [batch]

然后,路由器需要直接连接到收集器实例。下面是一个示例路由器配置:

router.yaml
cors:
allow_any_origin: true
supergraph:
listen: 0.0.0.0:4000
telemetry:
metrics:
otlp:
endpoint: http://COLLECTOR_ADDRESS:4317
tracing:
trace_config:
service_name: 'router'
service_namespace: 'apollo'
otlp:
endpoint: http://COLLECTOR_ADDRESS:4317

有关配置选项的更多信息,请参阅关于使用OpenTelemetryCollector 捕获指标捕获跟踪的文档。

直接连接

您不必使用OpenTelemetryCollector,也可以配置您的GraphOS Router实例直接将数据发送到您的APM工具。为此,您需要修改路由器的YAML配置文件,将导出设置为使用标题(在这种情况下,元数据),以及跟踪/指标以传递令牌。

下面是连接到New Relic的示例路由器配置:

router.yaml
cors:
allow_any_origin: true
supergraph:
listen: 0.0.0.0:4000
telemetry:
metrics:
otlp:
endpoint: https://otlp.nr-data.net
grpc:
metadata:
'api-key': ['${env.NEW_RELIC_LICENSE_KEY}']
tracing:
trace_config:
service_name: 'router'
service_namespace: 'apollo'
otlp:
endpoint: https://otlp.nr-data.net
grpc:
metadata:
'api-key': ['${env.NEW_RELIC_LICENSE_KEY}']

此配置使用 NEW_RELIC_LICENSE_KEY环境变量,通过路由器的 variable expansion feature变量扩展功能来传递密钥,从而避免在配置中包含敏感令牌。

下步
主页
评分文章评分

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司