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

事件

从路由请求的生命周期中捕获事件


一个 事件 用于指示在 GraphOS 路由器的请求生命周期。事件输出到日志和跟踪中。

您可以在事件可以是标准事件或自定义事件,并且可以由可配置的条件触发。

事件配置

路由器的请求生命周期服务

A's 请求生命周期有三个主要服务:

  • 路由器服务 - 在请求解析之前处理传入的请求。在不可见字节上下文中工作。
  • 超图服务 - 在请求解析后并且在其被发送到 之前处理请求。在 上下文中工作。
  • 子图服务 - 发送请求到子图后处理请求。在 GraphQL 上下文中工作。

使用 routersupergraphsubgraph 部分来定义每个服务的自定义事件配置:

future.router.yaml
telemetry:
instrumentation:
events:
router:
# ...
supergraph:
# ...
subgraph:
# ...

标准事件

每个服务都有一组可以配置的标准事件

  • request - 已收到请求。
  • response - 已发送响应。
  • error - 请求生命周期中发生错误。

注意

等级error仅适用于请求生命周期错误,不适用于GraphQL错误。

要配置这些事件,请将等级设置为traceinfowarnerroroff(默认)。

例如

router.yaml
telemetry:
instrumentation:
events:
router:
request: off
response: off
error: error
# ...

但您也可以根据条件启用这些标准事件(不支持批量请求)。

例如

router.yaml
telemetry:
instrumentation:
events:
router:
request:
level: info
condition: # Only log the router request if you sent `x-log-request` with the value `enabled`
eq:
- request_header: x-log-request
- "enabled"
response: off
error: error
supergraph:
response:
level: info
condition: # Only log the supergraph response containing graphql errors
eq:
- on_graphql_error: true
- true
error: error
# ...

自定义事件

此功能仅在 GraphOS 专用或企业计划中可用。
要比较所有计划类型对 GraphOS 功能的支持,请参阅 定价页面.

对于每个服务,您还可以配置自定义事件。

future.router.yaml
telemetry:
instrumentation:
events:
router:
# Custom events
my.event: # This key will automatically be added as a 'type' attribute of the event
# Custom event configuration

注意

请注意,您添加的遥测数据的量可能会影响您

路由器's 的性能。

  • 自定义指标、事件和属性比标准指标消耗更多的处理资源。添加太多(标准或自定义)可能会降低您的

    路由器

    的运行效率。

  • 例如配置events.*.request|error|response 产生所有 路由器 的生命周期服务的输出,应仅用于开发或调试,而不适用于生产。

对于适当的日志记录遥测数据,您应使用info 级别的日志记录。设置RUST_LOGAPOLLO_ROUTER_LOG 环境变量和 --log 命令行选项为info 。使用更详细的日志记录,如error,可能会导致一些属性丢失。

消息

每个自定义事件都必须有一个消息。这是一个固定值,应使用自定义属性来添加附加信息。

future.router.yaml
telemetry:
instrumentation:
events:
router:
acme.event:
message: "my event message"
# ...

on

每个自定义事件都必须指明它在何时被触发。这可以是requestresponseevent_responseerror

future.router.yaml
telemetry:
instrumentation:
events:
router:
acme.event:
on: request # request, response, event_response, error
# ...

event_response 在希望直接访问JSON响应体时非常有用。它还适用于 块事件。

级别

自定义事件有一个级别,包括tracedebuginfowarnerroroff(如果您想禁用此事件)。级别决定了事件的严重性。

设置级别

future.router.yaml
telemetry:
instrumentation:
events:
router:
acme.event:
level: info # trace, debug, info, warn, error, off
# ...

条件

自定义事件可以配置为在特定条件下发出,例如当响应状态码为200时。

router.yaml中,设置一个具有相等性(eq)检查的condition

future.router.yaml
telemetry:
instrumentation:
events:
router:
acme.event:
# ...
condition:
eq:
- 200
- response_status: Code

有关更多详情,请参阅条件

属性

自定义事件可以附加来自 路由器 请求生命周期的属性。这些属性用来筛选和组合您的 APM 中的跨度。

属性可以来自标准属性选择器。可用的属性取决于请求生命周期的服务。

future.router.yaml
telemetry:
instrumentation:
events:
router:
my.event:
# ...
attributes:
# Standard attributes
http.response.status_code: true
# Custom attributes
"my_attribute":
response_header: "x-my-header"

事件配置示例

例如,路由器服务可以使用标准事件(request, response, error),以及一个条件性自定义事件(my.event):

future.router.yaml
telemetry:
instrumentation:
events:
router:
# Standard events
request: info
response: info
error: info
# Custom events
my.event:
message: "my event message"
level: info
on: request
attributes:
http.response.body.size: false
# Only log when the x-log-request header is `log`
condition:
eq:
- "log"
- request_header: "x-log-request"
supergraph:
# Custom event configuration for supergraph service ...
subgraph:
# Custom event configuration for subgraph service ...

事件配置参考

选项默认值描述
<attribute-name>自定义属性的名称。
属性标准属性选择器自定义日志事件的属性。
条件条件事件被触发必须满足的条件。
错误trace|info|warn|error| 关闭关闭错误日志事件的级别。
级别trace|info|warn|error| 关闭关闭自定义日志事件的级别。
消息自定义日志事件的信息。
onrequest|response|error何时触发事件。
请求trace|info|warn|error| 关闭关闭请求日志事件的级别。
响应trace|info|warn|error| 关闭关闭响应日志事件的级别。
上一页
仪器
下一页
条件
评价文章评价在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,商业名为Apollo GraphQL。

隐私政策

公司