可觀測性
使用 Micrometer 的可觀測性支援 直接在 Spring for GraphQL 中進行檢測。這為 GraphQL 請求和「非平凡」資料擷取操作啟用指標和追蹤。由於 GraphQL 引擎在傳輸層之上運作,如果 Spring Framework 支援,您也應該預期來自傳輸的可觀察性。
只有在應用程式中配置了 ObservationRegistry
時,才會發布觀察。您可以進一步了解在 Spring Boot 中設定可觀測性基礎架構。如果您想自訂 GraphQL 觀察產生的中繼資料,您可以直接在檢測上設定自訂慣例。如果您的應用程式使用 Spring Boot,則將自訂慣例作為 bean 貢獻是較佳方式。
伺服器請求檢測
GraphQL 伺服器請求觀察以名稱 "graphql.request"
建立,適用於傳統和反應式應用程式以及所有支援的傳輸。此檢測假設任何父觀察都必須設定為 GraphQL 環境定義中的目前觀察,並使用眾所周知的 "micrometer.observation"
鍵。對於跨網路邊界的追蹤傳播,必須由傳輸層級的個別檢測負責。在 HTTP 的情況下,Spring Framework 有專門的檢測來處理追蹤傳播。
應用程式需要在其應用程式中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation
檢測。它預設使用 org.springframework.graphql.observation.DefaultExecutionRequestObservationConvention
,並由 ExecutionRequestObservationContext
支援。
預設情況下,會建立以下 KeyValue
名稱 |
描述 |
|
GraphQL 操作名稱。 |
|
GraphQL 請求的結果。 |
graphql.operation
KeyValue 將使用提供的查詢的自訂名稱,或操作的標準名稱(如果沒有)("query"
、"mutation"
或 "subscription"
)。graphql.outcome
KeyValue 將為
-
"SUCCESS"
如果已傳送有效的 GraphQL 回應且不包含任何錯誤 -
"REQUEST_ERROR"
如果請求無法解析,或者如果回應包含錯誤(沒有一個錯誤是org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR
類型) -
"INTERNAL_ERROR"
如果無法產生有效的 GraphQL 回應,或者如果回應包含至少一個org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR
類型的錯誤
名稱 |
描述 |
|
GraphQL 請求的 |
Spring for GraphQL 也為伺服器請求觀察貢獻事件。Micrometer 觀察事件通常作為追蹤中的 span 註解處理。此檢測將 GraphQL 回應中列出的錯誤記錄為事件。
名稱 |
上下文名稱 |
GraphQL 錯誤類型,例如 |
完整的 GraphQL 錯誤訊息,例如 |
DataFetcher 檢測
GraphQL DataFetcher 觀察以名稱 "graphql.datafetcher"
建立,僅適用於被認為是「非平凡」的資料擷取操作(在 Java 物件上擷取屬性是一種平凡的操作)。應用程式需要在其應用程式中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation
檢測。它預設使用 org.springframework.graphql.observation.DefaultDataFetcherObservationConvention
,並由 DataFetcherObservationContext
支援。
預設情況下,會建立以下 KeyValue
名稱 |
描述 |
|
資料擷取錯誤的類別名稱 |
|
正在擷取的欄位名稱。 |
|
GraphQL 資料擷取操作的結果,「成功」或「錯誤」。 |
名稱 |
描述 |
|
正在擷取的欄位的路徑(例如,「/bookById」)。 |