监视 GraphQL

了解如何监控 GraphQL。

追踪 GraphQL 的操作

Instana 提供对 GraphQL 查询、突变和预订的跟踪。

对于每个操作,我们都会捕获

请注意,我们仅捕获自变量密钥,而不捕获提供的值。

以下面的查询为例:

  query GetUsers {
    Users(active: true) {
      id
      email
      address
    }
    Orders {
      items
    }
  }
 

对于此查询,我们将捕获:

调用标记
call.graphql.operationType query
call.graphql.operationName GetUsers
call.graphql.arguments Users.active
call.graphql.fields Users.id, Users.email, Users.address, Orders.items

捕获的值将显示在调用详细信息中。 这有助于立即了解哪些 GraphQL 解析器参与了 GraphQL 操作的处理,从而轻松确定响应缓慢的可能原因。

通过“更多”按钮添加过滤器,也可以使用这些标记在分析视图中搜索调用和跟踪。 例如,要搜索涉及 Orders 对象类型的所有 GraphQL 操作,只需单击“更多”以添加用于调用标记 call.graphql.fields 包含 Orders 所在的调用的过滤器。 或者,在将标记设置为 call.graphql.fields 之后,请检查“值”下拉列表中的建议选项,以检查在所选时间范围内已请求哪些对象类型和字段。 另一个用例可能是查找访问特定字段的所有调用,或者通过添加具有相关字段/自变量名称的 call.graphql.fieldscall.graphql.arguments 的 "contains" 过滤器来使用某个自变量。

追踪 GraphQL 的订阅

GraphQL 客户机可以请求 GraphQL 服务器通过 GraphQL 预订向其通知底层数据模型中所发生的更改。

每次客户机收到其某个活动的 GraphQL 预订的更新时,我们都将此订阅更新作为 GraphQL 服务器对客户机的调用进行跟踪。 即,Instana 专注于对预订进行分布式跟踪,以记录在服务器和受影响订户上发生突变的影响

显示突变和随之而来的订户更新的跟踪。

表示预订更新的调用以 subscription-update 作为 call.graphql.operationType 标记的值进行标记。 为了便于分析特定预订的影响,所有预订更新调用都将在 GraphQL Subscribers 服务中进行分组,每个预订类型都表示为单独的端点。