监视 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.fields 或 call.graphql.arguments 的 "contains" 过滤器来使用某个自变量。
追踪 GraphQL 的订阅
GraphQL 客户机可以请求 GraphQL 服务器通过 GraphQL 预订向其通知底层数据模型中所发生的更改。
每次客户机收到其某个活动的 GraphQL 预订的更新时,我们都将此订阅更新作为 GraphQL 服务器对客户机的调用进行跟踪。 即,Instana 专注于对预订进行分布式跟踪,以记录在服务器和受影响订户上发生突变的影响。

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