可觀測性
使用 Micrometer 的可觀測性支援 直接整合到 Spring for GraphQL 中。這為 GraphQL 請求和“非平凡”資料獲取操作啟用了指標和跟蹤。由於 GraphQL 引擎在傳輸層之上執行,您還應該預期來自傳輸層的觀測,如果 Spring Framework 支援的話。
只有在應用程式中配置了 ObservationRegistry 時,才會釋出觀測。您可以瞭解更多關於在 Spring Boot 中配置可觀測性基礎設施的資訊。如果您想自定義 GraphQL 觀測產生的元資料,您可以直接在 instrumentation 上配置自定義約定。如果您的應用程式使用 Spring Boot,將自定義約定作為 bean 貢獻是首選方式。
伺服器請求 instrumentation
GraphQL 伺服器請求觀測以名稱 "graphql.request" 建立,適用於傳統和響應式應用程式以及所有受支援的傳輸層。此 instrumentation 假定任何父觀測必須使用眾所周知的 "micrometer.observation" 鍵在 GraphQL 上下文中設定為當前觀測。對於跨網路邊界的跟蹤傳播,傳輸層上的單獨 instrumentation 必須負責。對於 HTTP,Spring Framework 有專門的 instrumentation 負責跟蹤傳播。
應用程式需要在其應用程式中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation instrumentation。它預設使用 org.springframework.graphql.observation.DefaultExecutionRequestObservationConvention,由 ExecutionRequestObservationContext 提供支援。
預設情況下,將建立以下鍵值
名稱 |
描述 |
|
GraphQL 操作型別。 |
|
GraphQL 請求的結果。 |
graphql.operation.type 鍵值將使用操作的標準名稱("query"、"mutation" 或 "subscription"),如果請求文件無法解析,則為 "operation"。
graphql.outcome 鍵值將是
-
"SUCCESS"如果傳送了有效的 GraphQL 響應且不包含任何錯誤 -
"REQUEST_ERROR"如果請求無法解析,或者響應包含錯誤(其中沒有一個型別為org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR) -
"INTERNAL_ERROR"如果無法生成有效的 GraphQL 響應,或者響應包含至少一個型別為org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR的錯誤
名稱 |
描述 |
|
GraphQL 請求的 |
|
GraphQL 操作名稱。 |
graphql.operation.name 鍵值將類似於 graphql.operation.name,它將使用客戶端提供的操作名稱。
Spring for GraphQL 還為伺服器請求觀測貢獻事件。Micrometer 觀測事件 通常在跟蹤中作為 span 註解處理。此 instrumentation 將 GraphQL 響應中列出的錯誤記錄為事件。
名稱 |
上下文名稱 |
GraphQL 錯誤型別,例如 |
完整的 GraphQL 錯誤訊息,例如 |
DataFetcher instrumentation
GraphQL DataFetcher 觀測以名稱 "graphql.datafetcher" 建立,僅適用於被視為“非平凡”的資料獲取操作(Java 物件上的屬性獲取是平凡操作)。應用程式需要在其應用程式中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation instrumentation。它預設使用 org.springframework.graphql.observation.DefaultDataFetcherObservationConvention,由 DataFetcherObservationContext 提供支援。
預設情況下,將建立以下鍵值
名稱 |
描述 |
|
資料獲取錯誤的類名 |
|
正在獲取的欄位名稱。 |
|
GraphQL 資料獲取操作的結果,“SUCCESS”或“ERROR”。 |
名稱 |
描述 |
|
正在獲取的欄位路徑(例如,“/bookById”)。 |
DataLoader instrumentation
GraphQL DataLoader 觀測以名稱 "graphql.dataloader" 建立,觀測對 @BatchMapping 控制器方法和手動註冊的 DataLoader 例項的呼叫。應用程式需要在其應用程式中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation instrumentation。它預設使用 org.springframework.graphql.observation.DefaultDataLoaderObservationConvention,由 DataLoaderObservationContext 提供支援。
預設情況下,將建立以下鍵值
名稱 |
描述 |
|
資料獲取錯誤的類名 |
|
正在使用的 DataLoader 的名稱。 |
|
GraphQL 資料獲取操作的結果,“SUCCESS”或“ERROR”。 |
名稱 |
描述 |
|
載入元素列表的大小。 |