Monitoring GraphQL

追蹤 GraphQL 作業

Instana 提供 GraphQL 查詢、突變及訂閱的追蹤。 目前 GoRubyNode.jsJava 執行時期支援 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 服務中,每一個訂閱類型都以個別端點表示。